[FFmpeg-devel] [PATCH] ffprobe: Stash and use width and height before opening the codec
Michael Niedermayer
michaelni at gmx.at
Tue Mar 19 01:52:35 CET 2013
On Tue, Mar 19, 2013 at 01:37:23AM +0100, Stefano Sabatini wrote:
> On date Tuesday 2013-03-19 01:14:21 +0100, Michael Niedermayer encoded:
> > On Mon, Mar 18, 2013 at 11:36:02PM +0100, Stefano Sabatini wrote:
> [...]
> > > diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> > > index 94e8b57..ab914c1 100644
> > > --- a/libavcodec/utils.c
> > > +++ b/libavcodec/utils.c
> > > @@ -1078,9 +1078,9 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
> > > if ((ret = av_opt_set_dict(avctx, &tmp)) < 0)
> > > goto free_and_end;
> > >
> > > - //We only call avcodec_set_dimensions() for non h264 codecs so as not to overwrite previously setup dimensions
> > > - if (!(avctx->coded_width && avctx->coded_height && avctx->width && avctx->height &&
> > avctx->codec_id == AV_CODEC_ID_H264)){
> >
> > > + if (!(avctx->coded_width && avctx->coded_height && avctx->width && avctx->height) &&
> > > + avctx->codec_id != AV_CODEC_ID_H264 && avctx->codec_id != AV_CODEC_ID_VP6F) {
> >
> > this changes
> > !(A && B)
> >
> > to
> > !A && !B
>
> Ouch.
> --
> FFmpeg = Forgiving and Fascinating Multimedia Puritan Enhancing Gem
> utils.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
> cf40b7deb564db92c98c9bc7695ecd3923f36a82 0001-lavc-utils-add-VP6F-hack-for-setting-correct-video-s.patch
> From 8815591584498c8dc97969ca73d3fd2f01807f13 Mon Sep 17 00:00:00 2001
> From: Stefano Sabatini <stefasab at gmail.com>
> Date: Mon, 18 Mar 2013 23:17:55 +0100
> Subject: [PATCH] lavc/utils: add VP6F hack for setting correct video size in
> stream
>
> For some obscure reasons avcodec_set_dimensions() resets the width/height
> so that the resulting value set in the stream is equal to the
> corresponding coded_width/height, which is not the same as the correct
> width/height in case of the H.264 and VP6F codecs.
>
> This adds a codec-specific hack for VP6F which disables the call to
> avcodec_set_dimensions() in avcodec_open2(), like it is done with H264. A
> proper fix needs to be found yet.
>
> Fix trac ticket #1386.
>
> Based on a patch by Michael Niedermayer.
>
> Trolled-By: Daemon404
> ---
> libavcodec/utils.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> index 94e8b57..a703b3b 100644
> --- a/libavcodec/utils.c
> +++ b/libavcodec/utils.c
> @@ -1078,9 +1078,9 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
> if ((ret = av_opt_set_dict(avctx, &tmp)) < 0)
> goto free_and_end;
>
> - //We only call avcodec_set_dimensions() for non h264 codecs so as not to overwrite previously setup dimensions
> - if (!( avctx->coded_width && avctx->coded_height && avctx->width && avctx->height && avctx->codec_id == AV_CODEC_ID_H264)){
> -
> + // call avcodec_set_dimensions() for non H.264/VP6F codecs so as not to overwrite previously setup dimensions
> + if (!(avctx->coded_width && avctx->coded_height && avctx->width && avctx->height &&
> + (avctx->codec_id == AV_CODEC_ID_H264 || avctx->codec_id == AV_CODEC_ID_VP6F)) {
i count 3 ( but only 2 )
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
While the State exists there can be no freedom; when there is freedom there
will be no State. -- Vladimir Lenin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130319/c607cc1f/attachment.asc>
More information about the ffmpeg-devel
mailing list