>may be this is a miscue. by right, may not be sorry ponpon
2016-06-03 11:47 GMT+09:00 pon pon <pon.pon.3876098iu76.pon...@gmail.com>: > some problems of https://trac.ffmpeg.org/ticket/5595 are fixed. > can playback 480p.mp4, 720p.mp4, 1080p.mp4 with videotoolbox on osx1095. > test.mp4 may be supported by videdotoolbox hardware decoding because can > playback it with commands on #5272. > > ponpon > > 2016-06-02 11:06 GMT+09:00 Rick Kern <ker...@gmail.com>: > >> Fixes VTDecompressionSessionCreate() error. >> >> Signed-off-by: Rick Kern <ker...@gmail.com> >> --- >> libavcodec/videotoolbox.c | 59 >> ++++++++++++++++++++++++++++++++++++----------- >> 1 file changed, 45 insertions(+), 14 deletions(-) >> >> diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c >> index 2f4d531..cadfb23 100644 >> --- a/libavcodec/videotoolbox.c >> +++ b/libavcodec/videotoolbox.c >> @@ -487,23 +487,53 @@ static CFDictionaryRef >> videotoolbox_buffer_attributes_create(int width, >> return buffer_attributes; >> } >> >> -static CMVideoFormatDescriptionRef >> videotoolbox_format_desc_create(CMVideoCodecType codec_type, >> +static CMVideoFormatDescriptionRef >> videotoolbox_format_desc_create(AVCodecContext *avctx, >> + >> CMVideoCodecType codec_type, >> >> CFDictionaryRef decoder_spec, >> int >> width, >> int >> height) >> { >> - CMFormatDescriptionRef cm_fmt_desc; >> - OSStatus status; >> - >> - status = CMVideoFormatDescriptionCreate(kCFAllocatorDefault, >> - codec_type, >> - width, >> - height, >> - decoder_spec, // Dictionary >> of extension >> - &cm_fmt_desc); >> - >> - if (status) >> - return NULL; >> + CMFormatDescriptionRef cm_fmt_desc = NULL; >> + int status; >> + H264Context *h = codec_type == kCMVideoCodecType_H264 ? >> avctx->priv_data : NULL; >> + >> + if (h && h->sps.data_size && h->pps.data_size) { >> + int ps_count = 2; >> + const uint8_t **ps_data = av_malloc(sizeof(uint8_t*) * ps_count); >> + size_t *ps_sizes = av_malloc(sizeof(size_t) * ps_count); >> + >> + ps_data[0] = h->sps.data; >> + ps_sizes[0] = h->sps.data_size; >> + >> + ps_data[1] = h->pps.data; >> + ps_sizes[1] = h->pps.data_size; >> + >> + status = >> CMVideoFormatDescriptionCreateFromH264ParameterSets(NULL, >> + >> ps_count, >> + >> ps_data, >> + >> ps_sizes, >> + 4, >> + >> &cm_fmt_desc); >> + av_freep(&ps_sizes); >> + av_freep(&ps_data); >> + >> + if (status) { >> + av_log(avctx, AV_LOG_ERROR, "Error creating H.264 format >> description: %d\n", status); >> + return NULL; >> + } >> + } else { >> + status = CMVideoFormatDescriptionCreate(kCFAllocatorDefault, >> + codec_type, >> + width, >> + height, >> + decoder_spec, // >> Dictionary of extension >> + &cm_fmt_desc); >> + >> + if (status) { >> + av_log(avctx, AV_LOG_ERROR, "Error creating format >> description: %d\n", status); >> + return NULL; >> + } >> + } >> >> return cm_fmt_desc; >> } >> @@ -543,7 +573,8 @@ static int videotoolbox_default_init(AVCodecContext >> *avctx) >> >> decoder_spec = >> videotoolbox_decoder_config_create(videotoolbox->cm_codec_type, avctx); >> >> - videotoolbox->cm_fmt_desc = >> videotoolbox_format_desc_create(videotoolbox->cm_codec_type, >> + videotoolbox->cm_fmt_desc = videotoolbox_format_desc_create(avctx, >> + >> videotoolbox->cm_codec_type, >> >> decoder_spec, >> >> avctx->width, >> >> avctx->height); >> -- >> 2.7.4 >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> > > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel