[FFmpeg-devel] [PATCH] lavf/matroska: Adding the new SeekPreRoll element
Paul B Mahol
onemda at gmail.com
Fri Aug 16 19:36:47 CEST 2013
On 8/16/13, Vignesh Venkatasubramanian <vigneshv at google.com> wrote:
> In order to encapsuate Opus in Matroska, there is a new element
> that has been added to the Matroska Spec, SeekPreRoll. It has the
> duration in nanoseconds that has to be decoded before every seek.
> Spec: http://matroska.org/technical/specs/index.html#SeekPreRoll
> Proposal for encapsulateing Opus in Matroska:
> http://wiki.xiph.org/MatroskaOpus
>
> Signed-off-by: Vignesh Venkatasubramanian <vigneshv at google.com>
> ---
> libavformat/matroska.h | 1 +
> libavformat/matroskaenc.c | 8 ++++++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/libavformat/matroska.h b/libavformat/matroska.h
> index 2eb2fe6..9c8071a 100644
> --- a/libavformat/matroska.h
> +++ b/libavformat/matroska.h
> @@ -91,6 +91,7 @@
> #define MATROSKA_ID_CODECINFOURL 0x3B4040
> #define MATROSKA_ID_CODECDOWNLOADURL 0x26B240
> #define MATROSKA_ID_CODECDECODEALL 0xAA
> +#define MATROSKA_ID_SEEKPREROLL 0x56BB
> #define MATROSKA_ID_TRACKNAME 0x536E
> #define MATROSKA_ID_TRACKLANGUAGE 0x22B59C
> #define MATROSKA_ID_TRACKFLAGENABLED 0xB9
Keep alphabetical order.
> diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
> index c201d5e..56109f9 100644
> --- a/libavformat/matroskaenc.c
> +++ b/libavformat/matroskaenc.c
> @@ -121,6 +121,9 @@ typedef struct MatroskaMuxContext {
> /** per-cuepoint - 2 1-byte EBML IDs, 2 1-byte EBML sizes, 8-byte uint max
> */
> #define MAX_CUEPOINT_SIZE(num_tracks) 12 + MAX_CUETRACKPOS_SIZE*num_tracks
>
> +/** Seek preroll value for opus */
> +#define OPUS_SEEK_PREROLL 80000000
> +
>
> static int ebml_id_size(unsigned int id)
> {
> @@ -642,6 +645,10 @@ static int mkv_write_tracks(AVFormatContext *s)
> }
> }
>
> + if (codec->codec_id == AV_CODEC_ID_OPUS) {
> + put_ebml_uint(pb, MATROSKA_ID_SEEKPREROLL, OPUS_SEEK_PREROLL);
> + }
> +
> if (mkv->mode == MODE_WEBM && !(codec->codec_id == AV_CODEC_ID_VP8
> ||
> codec->codec_id == AV_CODEC_ID_VP9
> ||
> ((codec->codec_id ==
> AV_CODEC_ID_OPUS)&&(codec->strict_std_compliance <=
> FF_COMPLIANCE_EXPERIMENTAL)) ||
> @@ -1721,6 +1728,7 @@ AVOutputFormat ff_matroska_audio_muxer = {
> .priv_data_size = sizeof(MatroskaMuxContext),
> .audio_codec = CONFIG_LIBVORBIS_ENCODER ?
> AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3,
> + AV_CODEC_ID_OPUS,
Unrelated and wrong.
> .video_codec = AV_CODEC_ID_NONE,
> .write_header = mkv_write_header,
> .write_packet = mkv_write_packet,
> --
> 1.8.3
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
More information about the ffmpeg-devel
mailing list