[FFmpeg-devel] [PATCH] avcodec/h264: remove redundant and bogus get_format call
nfxjfg at googlemail.com
Sun Oct 11 21:27:13 CEST 2015
On Sun, 11 Oct 2015 21:22:40 +0200
Michael Niedermayer <michael at niedermayer.cc> wrote:
> On Sun, Oct 11, 2015 at 07:05:27PM +0200, wm4 wrote:
> > The AVCodecContext.get_format callback is not only used for pixel format
> > negotiation with the API user, but also for hwaccel init. For the
> > latter, it's required that some codec parameters, in particular the
> > codec profile, are set when the callback is invoked.
> > This patch removes a get_format invocation where this is not guaranteed.
> > The codec parameters, including the profile, are really set further
> > below. (The same code path that sets the profile also calls get_format
> > properly too.)
> > This just happened to work by coincidence in most cases. For example, if
> > the API user just copied or reused the AVStream's AVCodecContext when
> > decoding, the profile would be set properly. But in some cases it
> > fails., such as with the sample WolfensteinTwitch.mp4 on the samples
> > server.
> > Remove the redundant get_format call. Apparently it serves no purpose
> > anymore, although it is possible that this was different at the time it
> > was added in commit ffd77f94a26be22b8ead3178ceec3ed39e68abc5.
> > This fixes hwaccel usage for API users which do not set the profile
> > when setting up the AVCodecContext (which is allowed).
> > ---
> > libavcodec/h264_slice.c | 14 --------------
> > 1 file changed, 14 deletions(-)
> ive posted an alternative patchset of 2 patches which should prevent
> get_format() from being called. That would leave the check in place
I would prefer getting rid of this completely, because it looks
redundant. My patch also manages to get rid of the weird J format
handling (kill it with fire).
Do you have a sample that breaks with my patch?
> I couldnt reproduce the problem with command line FFmpeg though,
> Also i dont object to this patch here, if people prefer it but iam not
> sure that the test is really redundant
Because command line FFmpeg copies the entire AVCodecContext from
libavformat over, including the profile field (which would require
complicated h264 parsing in the demuxer).
More information about the ffmpeg-devel