[FFmpeg-devel] [PATCH 1/2] Adding support for parsing BlockAdditional

Vignesh Venkatasubramanian vigneshv at google.com
Tue Feb 5 21:09:54 CET 2013


On Mon, Feb 4, 2013 at 4:53 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
> On Mon, Feb 04, 2013 at 03:17:51PM -0800, Vignesh Venkatasubramanian wrote:
>> Matroska specification lists support for BlockAdditional element
>> which is not supported by ffmpeg's matroska parser. This patch
>> adds grammar definitions for parsing that element (and few other
>> related elements) and then puts the data in AVPacket.side_data
>> with new AVPacketSideDataType AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL.
>> It also updates the fate test crc generator to generate frame crc
>> based on both data and side_data instead of just data.
>>
>> Signed-off-by: Vignesh Venkatasubramanian <vigneshv at google.com>
>> ---
>>  libavcodec/avcodec.h      |   8 +
>>  libavformat/framecrcenc.c |   7 +-
>>  libavformat/matroska.h    |   4 +
>>  libavformat/matroskadec.c |  41 ++-
>>  tests/fate/vpx.mak        |   3 +
>>  tests/ref/fate/vp8-alpha  | 755 ++++++++++++++++++++++++++++++++++++++++++++++
>>  6 files changed, 813 insertions(+), 5 deletions(-)
>>  create mode 100644 tests/ref/fate/vp8-alpha
>>
>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>> index ca7764a..2ed63e2 100644
>> --- a/libavcodec/avcodec.h
>> +++ b/libavcodec/avcodec.h
>> @@ -983,6 +983,14 @@ enum AVPacketSideDataType {
>>       * @endcode
>>       */
>>      AV_PKT_DATA_SUBTITLE_POSITION,
>> +
>> +    /**
>> +     * Data found in BlockAdditional element of matroska container. There is
>> +     * no end marker for the data, so it is required to rely on the side data
>> +     * size to recognize the end. 8 byte id (as found in BlockAddId) followed
>> +     * by data.
>> +     */
>> +    AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
>>  };
>>
>>  /**
>
>> diff --git a/libavformat/framecrcenc.c b/libavformat/framecrcenc.c
>> index 8a69748..7a53f64 100644
>> --- a/libavformat/framecrcenc.c
>> +++ b/libavformat/framecrcenc.c
>> @@ -23,12 +23,17 @@
>>  #include "libavutil/avstring.h"
>>  #include "avformat.h"
>>  #include "internal.h"
>> +#include "libavcodec/avcodec.h"
>>
>>  static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt)
>>  {
>> -    uint32_t crc = av_adler32_update(0, pkt->data, pkt->size);
>> +    uint32_t crc;
>>      char buf[256];
>>
>> +    av_packet_merge_side_data(pkt);
>> +    crc = av_adler32_update(0, pkt->data, pkt->size);
>> +    av_packet_split_side_data(pkt);
>> +
>>      snprintf(buf, sizeof(buf), "%d, %10"PRId64", %10"PRId64", %8d, %8d, 0x%08x",
>>               pkt->stream_index, pkt->dts, pkt->pts, pkt->duration, pkt->size, crc);
>>      if (pkt->flags != AV_PKT_FLAG_KEY)
>
> I think its better to print a list of CRCs, one for each side data
> element.
> It could be quite helpfull when debuging, when one but not the other
> changes. Also the framecrcenc change belongs into a seperate patch.

Ok. I will do this and send it in as a different patch.

>
> Ive also uploaded the new file, though would prefer a smaller file to
> keep the whole fate suite as small and fast as possible
> no big issue though, its ok as is if you think such a bigger file
> provides more complete testing

Not an issue. Please replace it with the file attached in this email.
It is much smaller. Sorry about the consecutive test file changes.

>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Breaking DRM is a little like attempting to break through a door even
> though the window is wide open and the only thing in the house is a bunch
> of things you dont want and which you would get tomorrow for free anyway
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>



--
Vignesh V | Software Engineer | vigneshv at google.com | 650-861-1330
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vp8_video_with_alpha.webm
Type: application/octet-stream
Size: 238010 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130205/3967c859/attachment.obj>


More information about the ffmpeg-devel mailing list