Re: [FFmpeg-devel] [PATCH] ffprobe: print some basic information about avframe side data
On Wed, Jul 30, 2014 at 05:21:15PM +0200, Stefano Sabatini wrote: > On date Wednesday 2014-07-30 15:21:06 +0200, Michael Niedermayer encoded: > > Signed-off-by: Michael Niedermayer > > --- > > doc/ffprobe.xsd | 11 +++ > > ffprobe.c | 21 - > > 2 files changed, 31 insertions(+), 1 deletion(-) > > > > diff --git a/doc/ffprobe.xsd b/doc/ffprobe.xsd > > index 9ef9ecb..e0e9179 100644 > > --- a/doc/ffprobe.xsd > > +++ b/doc/ffprobe.xsd > > @@ -55,6 +55,7 @@ > > > > > > > maxOccurs="unbounded"/> > > + > type="ffprobe:frameSideDataListType" minOccurs="0" maxOccurs="1" /> > > > > > > > use="required"/> > > @@ -91,6 +92,16 @@ > > > > > > > > + > > + > > + > minOccurs="1" maxOccurs="unbounded"/> > > I'd say side_data for consistency > > > + > > + > > + > > + > type="xsd:string"/> > > + > /> > > + > > + > > > > > fixed="subtitle" use="required"/> > > > > diff --git a/ffprobe.c b/ffprobe.c > > index 1329466..c9fc79d 100644 > > --- a/ffprobe.c > > +++ b/ffprobe.c > > @@ -123,6 +123,8 @@ typedef enum { > > SECTION_ID_FRAME, > > SECTION_ID_FRAMES, > > SECTION_ID_FRAME_TAGS, > > > +SECTION_ID_FRAME_SIDEDATA_LIST, > > +SECTION_ID_FRAME_SIDEDATA, > > same here SIDE_DATA* > > > SECTION_ID_LIBRARY_VERSION, > > SECTION_ID_LIBRARY_VERSIONS, > > SECTION_ID_PACKET, > > @@ -152,8 +154,10 @@ static struct section sections[] = { > > [SECTION_ID_FORMAT] = { SECTION_ID_FORMAT, "format", 0, { > > SECTION_ID_FORMAT_TAGS, -1 } }, > > [SECTION_ID_FORMAT_TAGS] ={ SECTION_ID_FORMAT_TAGS, "tags", > > SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", > > .unique_name = "format_tags" }, > > [SECTION_ID_FRAMES] = { SECTION_ID_FRAMES, "frames", > > SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME, SECTION_ID_SUBTITLE, -1 } }, > > -[SECTION_ID_FRAME] = { SECTION_ID_FRAME, "frame", 0, { > > SECTION_ID_FRAME_TAGS, -1 } }, > > +[SECTION_ID_FRAME] = { SECTION_ID_FRAME, "frame", 0, { > > SECTION_ID_FRAME_TAGS, SECTION_ID_FRAME_SIDEDATA_LIST, -1 } }, > > [SECTION_ID_FRAME_TAGS] = { SECTION_ID_FRAME_TAGS, "tags", > > SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", > > .unique_name = "frame_tags" }, > > +[SECTION_ID_FRAME_SIDEDATA_LIST] ={ SECTION_ID_FRAME_SIDEDATA_LIST, > > "sidedata_list", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDEDATA, -1 } }, > > +[SECTION_ID_FRAME_SIDEDATA] = { SECTION_ID_FRAME_SIDEDATA, > > "sidedata", 0, { -1 } }, > > [SECTION_ID_LIBRARY_VERSIONS] = { SECTION_ID_LIBRARY_VERSIONS, > > "library_versions", SECTION_FLAG_IS_ARRAY, { SECTION_ID_LIBRARY_VERSION, -1 > > } }, > > [SECTION_ID_LIBRARY_VERSION] ={ SECTION_ID_LIBRARY_VERSION, > > "library_version", 0, { -1 } }, > > [SECTION_ID_PACKETS] ={ SECTION_ID_PACKETS, "packets", > > SECTION_FLAG_IS_ARRAY, { SECTION_ID_PACKET, -1} }, > > @@ -1722,6 +1726,7 @@ static void show_frame(WriterContext *w, AVFrame > > *frame, AVStream *stream, > > { > > AVBPrint pbuf; > > const char *s; > > +int i; > > > > av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED); > > > > @@ -1784,6 +1789,20 @@ static void show_frame(WriterContext *w, AVFrame > > *frame, AVStream *stream, > > } > > if (do_show_frame_tags) > > show_tags(w, av_frame_get_metadata(frame), SECTION_ID_FRAME_TAGS); > > +if (frame->nb_side_data) { > > +writer_print_section_header(w, SECTION_ID_FRAME_SIDEDATA_LIST); > > +for (i = 0; i < frame->nb_side_data; i++) { > > +AVFrameSideData *sd = frame->side_data[i]; > > +const char *name; > > + > > +writer_print_section_header(w, SECTION_ID_FRAME_SIDEDATA); > > +name = av_frame_side_data_name(sd->type); > > +print_str("side_data_type", name ? name : "unknown"); > > +print_int("side_data_size", sd->size); > > +writer_print_section_footer(w); > > +} > > +writer_print_section_footer(w); > > +} > > > > writer_print_section_footer(w); > > LGTM otherwise, thanks. sidedatas renamed applied thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Into a blind darkness they enter who follow after the Ignorance, they as if into a greater darkness enter who devote themselves to the Knowledge alone. -- Isha Upanishad signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] ffprobe: print some basic information about avframe side data
On date Wednesday 2014-07-30 15:21:06 +0200, Michael Niedermayer encoded: > Signed-off-by: Michael Niedermayer > --- > doc/ffprobe.xsd | 11 +++ > ffprobe.c | 21 - > 2 files changed, 31 insertions(+), 1 deletion(-) > > diff --git a/doc/ffprobe.xsd b/doc/ffprobe.xsd > index 9ef9ecb..e0e9179 100644 > --- a/doc/ffprobe.xsd > +++ b/doc/ffprobe.xsd > @@ -55,6 +55,7 @@ > > > maxOccurs="unbounded"/> > + type="ffprobe:frameSideDataListType" minOccurs="0" maxOccurs="1" /> > > > > @@ -91,6 +92,16 @@ > > > > + > + > + minOccurs="1" maxOccurs="unbounded"/> I'd say side_data for consistency > + > + > + > + > + > + > + > > fixed="subtitle" use="required"/> > > diff --git a/ffprobe.c b/ffprobe.c > index 1329466..c9fc79d 100644 > --- a/ffprobe.c > +++ b/ffprobe.c > @@ -123,6 +123,8 @@ typedef enum { > SECTION_ID_FRAME, > SECTION_ID_FRAMES, > SECTION_ID_FRAME_TAGS, > +SECTION_ID_FRAME_SIDEDATA_LIST, > +SECTION_ID_FRAME_SIDEDATA, same here SIDE_DATA* > SECTION_ID_LIBRARY_VERSION, > SECTION_ID_LIBRARY_VERSIONS, > SECTION_ID_PACKET, > @@ -152,8 +154,10 @@ static struct section sections[] = { > [SECTION_ID_FORMAT] = { SECTION_ID_FORMAT, "format", 0, { > SECTION_ID_FORMAT_TAGS, -1 } }, > [SECTION_ID_FORMAT_TAGS] ={ SECTION_ID_FORMAT_TAGS, "tags", > SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name > = "format_tags" }, > [SECTION_ID_FRAMES] = { SECTION_ID_FRAMES, "frames", > SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME, SECTION_ID_SUBTITLE, -1 } }, > -[SECTION_ID_FRAME] = { SECTION_ID_FRAME, "frame", 0, { > SECTION_ID_FRAME_TAGS, -1 } }, > +[SECTION_ID_FRAME] = { SECTION_ID_FRAME, "frame", 0, { > SECTION_ID_FRAME_TAGS, SECTION_ID_FRAME_SIDEDATA_LIST, -1 } }, > [SECTION_ID_FRAME_TAGS] = { SECTION_ID_FRAME_TAGS, "tags", > SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name > = "frame_tags" }, > +[SECTION_ID_FRAME_SIDEDATA_LIST] ={ SECTION_ID_FRAME_SIDEDATA_LIST, > "sidedata_list", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDEDATA, -1 } }, > +[SECTION_ID_FRAME_SIDEDATA] = { SECTION_ID_FRAME_SIDEDATA, > "sidedata", 0, { -1 } }, > [SECTION_ID_LIBRARY_VERSIONS] = { SECTION_ID_LIBRARY_VERSIONS, > "library_versions", SECTION_FLAG_IS_ARRAY, { SECTION_ID_LIBRARY_VERSION, -1 } > }, > [SECTION_ID_LIBRARY_VERSION] ={ SECTION_ID_LIBRARY_VERSION, > "library_version", 0, { -1 } }, > [SECTION_ID_PACKETS] ={ SECTION_ID_PACKETS, "packets", > SECTION_FLAG_IS_ARRAY, { SECTION_ID_PACKET, -1} }, > @@ -1722,6 +1726,7 @@ static void show_frame(WriterContext *w, AVFrame > *frame, AVStream *stream, > { > AVBPrint pbuf; > const char *s; > +int i; > > av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED); > > @@ -1784,6 +1789,20 @@ static void show_frame(WriterContext *w, AVFrame > *frame, AVStream *stream, > } > if (do_show_frame_tags) > show_tags(w, av_frame_get_metadata(frame), SECTION_ID_FRAME_TAGS); > +if (frame->nb_side_data) { > +writer_print_section_header(w, SECTION_ID_FRAME_SIDEDATA_LIST); > +for (i = 0; i < frame->nb_side_data; i++) { > +AVFrameSideData *sd = frame->side_data[i]; > +const char *name; > + > +writer_print_section_header(w, SECTION_ID_FRAME_SIDEDATA); > +name = av_frame_side_data_name(sd->type); > +print_str("side_data_type", name ? name : "unknown"); > +print_int("side_data_size", sd->size); > +writer_print_section_footer(w); > +} > +writer_print_section_footer(w); > +} > > writer_print_section_footer(w); LGTM otherwise, thanks. -- FFmpeg = Fascinating Fundamental Maxi Philosophical Emblematic Geek ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] ffprobe: print some basic information about avframe side data
Signed-off-by: Michael Niedermayer --- doc/ffprobe.xsd | 11 +++ ffprobe.c | 21 - 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/doc/ffprobe.xsd b/doc/ffprobe.xsd index 9ef9ecb..e0e9179 100644 --- a/doc/ffprobe.xsd +++ b/doc/ffprobe.xsd @@ -55,6 +55,7 @@ + @@ -91,6 +92,16 @@ + + + + + + + + + + diff --git a/ffprobe.c b/ffprobe.c index 1329466..c9fc79d 100644 --- a/ffprobe.c +++ b/ffprobe.c @@ -123,6 +123,8 @@ typedef enum { SECTION_ID_FRAME, SECTION_ID_FRAMES, SECTION_ID_FRAME_TAGS, +SECTION_ID_FRAME_SIDEDATA_LIST, +SECTION_ID_FRAME_SIDEDATA, SECTION_ID_LIBRARY_VERSION, SECTION_ID_LIBRARY_VERSIONS, SECTION_ID_PACKET, @@ -152,8 +154,10 @@ static struct section sections[] = { [SECTION_ID_FORMAT] = { SECTION_ID_FORMAT, "format", 0, { SECTION_ID_FORMAT_TAGS, -1 } }, [SECTION_ID_FORMAT_TAGS] ={ SECTION_ID_FORMAT_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "format_tags" }, [SECTION_ID_FRAMES] = { SECTION_ID_FRAMES, "frames", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME, SECTION_ID_SUBTITLE, -1 } }, -[SECTION_ID_FRAME] = { SECTION_ID_FRAME, "frame", 0, { SECTION_ID_FRAME_TAGS, -1 } }, +[SECTION_ID_FRAME] = { SECTION_ID_FRAME, "frame", 0, { SECTION_ID_FRAME_TAGS, SECTION_ID_FRAME_SIDEDATA_LIST, -1 } }, [SECTION_ID_FRAME_TAGS] = { SECTION_ID_FRAME_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "frame_tags" }, +[SECTION_ID_FRAME_SIDEDATA_LIST] ={ SECTION_ID_FRAME_SIDEDATA_LIST, "sidedata_list", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDEDATA, -1 } }, +[SECTION_ID_FRAME_SIDEDATA] = { SECTION_ID_FRAME_SIDEDATA, "sidedata", 0, { -1 } }, [SECTION_ID_LIBRARY_VERSIONS] = { SECTION_ID_LIBRARY_VERSIONS, "library_versions", SECTION_FLAG_IS_ARRAY, { SECTION_ID_LIBRARY_VERSION, -1 } }, [SECTION_ID_LIBRARY_VERSION] ={ SECTION_ID_LIBRARY_VERSION, "library_version", 0, { -1 } }, [SECTION_ID_PACKETS] ={ SECTION_ID_PACKETS, "packets", SECTION_FLAG_IS_ARRAY, { SECTION_ID_PACKET, -1} }, @@ -1722,6 +1726,7 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream, { AVBPrint pbuf; const char *s; +int i; av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED); @@ -1784,6 +1789,20 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream, } if (do_show_frame_tags) show_tags(w, av_frame_get_metadata(frame), SECTION_ID_FRAME_TAGS); +if (frame->nb_side_data) { +writer_print_section_header(w, SECTION_ID_FRAME_SIDEDATA_LIST); +for (i = 0; i < frame->nb_side_data; i++) { +AVFrameSideData *sd = frame->side_data[i]; +const char *name; + +writer_print_section_header(w, SECTION_ID_FRAME_SIDEDATA); +name = av_frame_side_data_name(sd->type); +print_str("side_data_type", name ? name : "unknown"); +print_int("side_data_size", sd->size); +writer_print_section_footer(w); +} +writer_print_section_footer(w); +} writer_print_section_footer(w); -- 1.7.9.5 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] ffprobe: print some basic information about avframe side data
On Tue, Jul 01, 2014 at 07:20:13PM +0200, Clément Bœsch wrote: > On Tue, Jul 01, 2014 at 05:50:11PM +0200, Michael Niedermayer wrote: > > On Mon, Jun 30, 2014 at 06:37:45PM +0200, Clément Bœsch wrote: > > > On Mon, Jun 30, 2014 at 04:16:17AM +0200, Michael Niedermayer wrote: > > > > Signed-off-by: Michael Niedermayer > > > > --- > > > > ffprobe.c |6 ++ > > > > 1 file changed, 6 insertions(+) > > > > > > > > diff --git a/ffprobe.c b/ffprobe.c > > > > index 1329466..e96f51f 100644 > > > > --- a/ffprobe.c > > > > +++ b/ffprobe.c > > > > @@ -1722,6 +1722,7 @@ static void show_frame(WriterContext *w, AVFrame > > > > *frame, AVStream *stream, > > > > { > > > > AVBPrint pbuf; > > > > const char *s; > > > > +int i; > > > > > > > > av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED); > > > > > > > > @@ -1765,6 +1766,11 @@ static void show_frame(WriterContext *w, AVFrame > > > > *frame, AVStream *stream, > > > > print_int("interlaced_frame", frame->interlaced_frame); > > > > print_int("top_field_first",frame->top_field_first); > > > > print_int("repeat_pict",frame->repeat_pict); > > > > +for (i = 0; i < frame->nb_side_data; i++) { > > > > +AVFrameSideData *sd = frame->side_data[i]; > > > > +print_int("side_data_type", sd->type); > > > > +print_int("side_data_size", sd->size); > > > > +} > > > > > > I suppose there are a few writers where having multiple time the same key > > > will cause problems... > > > > what do you suggest instead ? > > > > Probably like we do with streams for instance. You'll have to create a new > "side data" section I suppose. done and resubmitted [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB DNS cache poisoning attacks, popular search engine, Google internet authority dont be evil, please signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel