[FFmpeg-devel] [PATCH v2 1/2] avformat/framehash: add extradata checksum
Michael Niedermayer
michael at niedermayer.cc
Wed Apr 13 12:40:44 CEST 2016
On Wed, Apr 13, 2016 at 12:28:23PM +0200, Michael Niedermayer wrote:
> On Wed, Apr 13, 2016 at 01:54:25AM -0300, James Almer wrote:
> > Signed-off-by: James Almer <jamrial at gmail.com>
> > ---
> > I'm keeping the version code for the time being, unless people disagree.
> > Removing it if needed is trivial.
> >
> > libavformat/hashenc.c | 30 ++++++++++++++++++++++++++++++
> > 1 file changed, 30 insertions(+)
> >
> > diff --git a/libavformat/hashenc.c b/libavformat/hashenc.c
> > index 614c815..e471789 100644
> > --- a/libavformat/hashenc.c
> > +++ b/libavformat/hashenc.c
> > @@ -149,6 +149,33 @@ AVOutputFormat ff_md5_muxer = {
> > #endif
> >
> > #if CONFIG_FRAMEHASH_MUXER || CONFIG_FRAMEMD5_MUXER
> > +static void framehash_print_extradata(struct AVFormatContext *s)
> > +{
> > + int i, header_printed = 0;
> > +
> > + for (i = 0; i < s->nb_streams; i++) {
> > + AVStream *st = s->streams[i];
> > + AVCodecParameters *par = st->codecpar;
> > + if (par->extradata) {
> > + struct HashContext *c = s->priv_data;
> > + char buf[AV_HASH_MAX_SIZE*2+128];
> > + int len;
> > +
> > + if (!header_printed) {
> > + avio_printf(s->pb, "#extradata#, size, hash\n");
> > + header_printed = 1;
> > + }
> > + av_hash_init(c->hash);
> > + av_hash_update(c->hash, par->extradata, par->extradata_size);
> > + snprintf(buf, sizeof(buf) - (AV_HASH_MAX_SIZE * 2 + 1), "%d, %42d, ", i, par->extradata_size);
> > + len = strlen(buf);
> > + av_hash_final_hex(c->hash, buf + len, sizeof(buf) - len);
> > + av_strlcatf(buf, sizeof(buf), "\n");
> > + avio_write(s->pb, buf, strlen(buf));
> > + }
> > + }
> > +}
>
> This breaks the syntax of framehash and anything using it
> the syntax prior to this is that
> theres one header followed by frames with fields described by that
> header and comments starting with #
> also comment generally had as 2nd field the stream number
>
> after that there would be multiple headers and lists
>
> also in practical terms this syntax is much harder to parse as lines
> no longer can be interpreted on their own but their position
> in the file in relation to other lines suddenly becomes required
> to be used to interpret them
> especially simple parsing with basic tools like grep and sed would
> suffer from this
also there is the issue of interpreting diffs of framehash
having fully self contained lines would avoid the "does this change
extradata, or a program or a frame, ..." question
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Freedom in capitalist society always remains about the same as it was in
ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160413/1e19af96/attachment.sig>
More information about the ffmpeg-devel
mailing list