lavc: add trailing_padding to AVCodecContext to match AVCodecParameters.

Shows encoder delay/padding in the stream summary if they are set.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Jon Toohill 2016-08-15 13:13:06 -07:00 committed by Michael Niedermayer
parent 3282e31baa
commit c3c4c72665
4 changed files with 39 additions and 18 deletions

View File

@ -15,6 +15,10 @@ libavutil: 2015-08-28
API changes, most recent first:
2016-08-15 - xxxxxxx - lavc 57.53.100 - avcodec.h
Add trailing_padding to AVCodecContext to match the corresponding
field in AVCodecParameters.
2016-08-04 - xxxxxxx - lavf 57.46.100 - avformat.h
Add av_get_frame_filename2()

View File

@ -3524,6 +3524,17 @@ typedef struct AVCodecContext {
#define FF_SUB_TEXT_FMT_ASS_WITH_TIMINGS 1
#endif
/**
* Audio only. The amount of padding (in samples) appended by the encoder to
* the end of the audio. I.e. this number of decoded samples must be
* discarded by the caller from the end of the stream to get the original
* audio without any trailing padding.
*
* - decoding: unused
* - encoding: unused
*/
int trailing_padding;
} AVCodecContext;
AVRational av_codec_get_pkt_timebase (const AVCodecContext *avctx);

View File

@ -3258,6 +3258,10 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
&& enc->bits_per_raw_sample != av_get_bytes_per_sample(enc->sample_fmt) * 8)
snprintf(buf + strlen(buf), buf_size - strlen(buf),
" (%d bit)", enc->bits_per_raw_sample);
if (enc->initial_padding || enc->trailing_padding) {
snprintf(buf + strlen(buf), buf_size - strlen(buf),
", delay %d, padding %d", enc->initial_padding, enc->trailing_padding);
}
break;
case AVMEDIA_TYPE_DATA:
if (av_log_get_level() >= AV_LOG_DEBUG) {
@ -4103,14 +4107,15 @@ int avcodec_parameters_from_context(AVCodecParameters *par,
par->video_delay = codec->has_b_frames;
break;
case AVMEDIA_TYPE_AUDIO:
par->format = codec->sample_fmt;
par->channel_layout = codec->channel_layout;
par->channels = codec->channels;
par->sample_rate = codec->sample_rate;
par->block_align = codec->block_align;
par->frame_size = codec->frame_size;
par->initial_padding = codec->initial_padding;
par->seek_preroll = codec->seek_preroll;
par->format = codec->sample_fmt;
par->channel_layout = codec->channel_layout;
par->channels = codec->channels;
par->sample_rate = codec->sample_rate;
par->block_align = codec->block_align;
par->frame_size = codec->frame_size;
par->initial_padding = codec->initial_padding;
par->trailing_padding = codec->trailing_padding;
par->seek_preroll = codec->seek_preroll;
break;
case AVMEDIA_TYPE_SUBTITLE:
par->width = codec->width;
@ -4157,15 +4162,16 @@ int avcodec_parameters_to_context(AVCodecContext *codec,
codec->has_b_frames = par->video_delay;
break;
case AVMEDIA_TYPE_AUDIO:
codec->sample_fmt = par->format;
codec->channel_layout = par->channel_layout;
codec->channels = par->channels;
codec->sample_rate = par->sample_rate;
codec->block_align = par->block_align;
codec->frame_size = par->frame_size;
codec->delay =
codec->initial_padding = par->initial_padding;
codec->seek_preroll = par->seek_preroll;
codec->sample_fmt = par->format;
codec->channel_layout = par->channel_layout;
codec->channels = par->channels;
codec->sample_rate = par->sample_rate;
codec->block_align = par->block_align;
codec->frame_size = par->frame_size;
codec->delay =
codec->initial_padding = par->initial_padding;
codec->trailing_padding = par->trailing_padding;
codec->seek_preroll = par->seek_preroll;
break;
case AVMEDIA_TYPE_SUBTITLE:
codec->width = par->width;

View File

@ -28,7 +28,7 @@
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 57
#define LIBAVCODEC_VERSION_MINOR 52
#define LIBAVCODEC_VERSION_MINOR 53
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \