mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
h264_mp4toannexb_bsf: do not fail on annex B extradata
Just pass through the bitstream as is. This is the same as what is done for HEVC already.
This commit is contained in:
parent
5fca95c8e5
commit
f3ed484953
@ -131,10 +131,16 @@ static int h264_extradata_to_annexb(AVBSFContext *ctx, const int padding)
|
||||
static int h264_mp4toannexb_init(AVBSFContext *ctx)
|
||||
{
|
||||
H264BSFContext *s = ctx->priv_data;
|
||||
int extra_size = ctx->par_in->extradata_size;
|
||||
int ret;
|
||||
|
||||
/* retrieve sps and pps NAL units from extradata */
|
||||
if (ctx->par_in->extradata_size >= 6) {
|
||||
if (!extra_size ||
|
||||
(extra_size >= 3 && AV_RB24(ctx->par_in->extradata) == 1) ||
|
||||
(extra_size >= 4 && AV_RB32(ctx->par_in->extradata) == 1)) {
|
||||
av_log(ctx, AV_LOG_VERBOSE,
|
||||
"The input looks like it is Annex B already\n");
|
||||
} else if (extra_size >= 6) {
|
||||
ret = h264_extradata_to_annexb(ctx, AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@ -142,6 +148,9 @@ static int h264_mp4toannexb_init(AVBSFContext *ctx)
|
||||
s->length_size = ret;
|
||||
s->first_idr = 1;
|
||||
s->extradata_parsed = 1;
|
||||
} else {
|
||||
av_log(ctx, AV_LOG_ERROR, "Invalid extradata size: %d\n", extra_size);
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user