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 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. has a fixed framerate. Ignored if @option{tick_rate} is not also set.
@item delete_padding
Deletes Padding OBUs.
@end table @end table
@section chomp @section chomp

View File

@ -46,6 +46,8 @@ typedef struct AV1MetadataContext {
AVRational tick_rate; AVRational tick_rate;
int num_ticks_per_picture; int num_ticks_per_picture;
int delete_padding;
} AV1MetadataContext; } 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); err = ff_cbs_write_packet(ctx->cbc, out, frag);
if (err < 0) { if (err < 0) {
av_log(bsf, AV_LOG_ERROR, "Failed to write packet.\n"); 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, OFFSET(num_ticks_per_picture), AV_OPT_TYPE_INT,
{ .i64 = -1 }, -1, INT_MAX, FLAGS }, { .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 } { NULL }
}; };

View File

@ -29,7 +29,7 @@
#define LIBAVCODEC_VERSION_MAJOR 58 #define LIBAVCODEC_VERSION_MAJOR 58
#define LIBAVCODEC_VERSION_MINOR 48 #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, \ #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \ LIBAVCODEC_VERSION_MINOR, \