avcodec/av1_metadata: add an option to remove Padding OBUs

Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer 2019-03-25 00:27:23 -03:00
parent 1125277bc6
commit ee16d14b0a
3 changed files with 23 additions and 1 deletions

View File

@ -87,6 +87,9 @@ the timing info in the sequence header.
Set the number of ticks in each picture, to indicate that the stream
has a fixed framerate. Ignored if @option{tick_rate} is not also set.
@item delete_padding
Deletes Padding OBUs.
@end table
@section chomp

View File

@ -46,6 +46,8 @@ typedef struct AV1MetadataContext {
AVRational tick_rate;
int num_ticks_per_picture;
int delete_padding;
} AV1MetadataContext;
@ -158,6 +160,19 @@ static int av1_metadata_filter(AVBSFContext *bsf, AVPacket *out)
}
}
if (ctx->delete_padding) {
for (i = 0; i < frag->nb_units; i++) {
if (frag->units[i].type == AV1_OBU_PADDING) {
err = ff_cbs_delete_unit(ctx->cbc, frag, i);
if (err < 0) {
av_log(bsf, AV_LOG_ERROR, "Failed to delete Padding OBU.\n");
goto fail;
}
--i;
}
}
}
err = ff_cbs_write_packet(ctx->cbc, out, frag);
if (err < 0) {
av_log(bsf, AV_LOG_ERROR, "Failed to write packet.\n");
@ -275,6 +290,10 @@ static const AVOption av1_metadata_options[] = {
OFFSET(num_ticks_per_picture), AV_OPT_TYPE_INT,
{ .i64 = -1 }, -1, INT_MAX, FLAGS },
{ "delete_padding", "Delete all Padding OBUs",
OFFSET(delete_padding), AV_OPT_TYPE_BOOL,
{ .i64 = 0 }, 0, 1, FLAGS},
{ NULL }
};

View File

@ -29,7 +29,7 @@
#define LIBAVCODEC_VERSION_MAJOR 58
#define LIBAVCODEC_VERSION_MINOR 48
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_MICRO 101
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \