[FFmpeg-trac] #10770(undetermined:new): avcodec_open2 overwrites flags contrary to what the doc says
FFmpeg
trac at avcodec.org
Sun Dec 31 15:08:37 EET 2023
#10770: avcodec_open2 overwrites flags contrary to what the doc says
-------------------------------------+-------------------------------------
Reporter: Jean- | Type: defect
Michaël Celerier |
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
The avcodec_open2 documentation states, about the options parameter:
{{{
* @param options A dictionary filled with AVCodecContext and codec-
private
* options, which are set on top of the options already set
in
* avctx, can be NULL. On return this object will be filled
with
* options that were not found in the avctx codec context.
}}}
Yet given the following program, the final assert does not pass:
AV_CODEC_FLAG_GLOBAL_HEADER gets overwritten in the codec context's flags.
{{{
extern "C" {
#include <libavcodec/avcodec.h>
}
#include <cassert>
int main()
{
auto codec = avcodec_find_encoder_by_name("libx264");
auto c = avcodec_alloc_context3(codec);
c->width = 1280;
c->height = 720;
c->time_base = (AVRational){100000, int(100000 * 30)};
c->framerate = AVRational{c->time_base.den, c->time_base.num};
c->gop_size = 0;
c->max_b_frames = 0;
c->pix_fmt = AV_PIX_FMT_YUV420P;
c->strict_std_compliance = FF_COMPLIANCE_NORMAL;
c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
AVDictionary* opt{};
av_dict_set(&opt, "flags", "low_delay", 0);
avcodec_open2(c, codec, &opt);
assert(c->flags & AV_CODEC_FLAG_GLOBAL_HEADER);
}
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/10770>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list