Outdated patch. See [PATCH 4/4] under '[PATCH 0/4] Support for HDMV Interactive Graphics Stream' stream.
Sorry, David Le vendredi 01 juin 2012 à 17:12 +0200, David Girault a écrit : > These changes add support for copying overlay streams. > So to extract IGS menu from m2ts file: > $ avconv -i source.m2ts -vn -an -sn output.mnu > > To mux IGS menu with h264 video in ts: > $ avconv -i video.264 -i test.mnu -f mpegts out.ts > > Todo: update mpegts muxer to set correct PID so > output may be compatible to BDAV format. > > Signed-off-by: David Girault <[email protected]> > --- > avconv.c | 26 ++++++++++++++++++++++++++ > cmdutils.h | 1 + > 2 files changed, 27 insertions(+) > > diff --git a/avconv.c b/avconv.c > index cbf66c4..2ea1224 100644 > --- a/avconv.c > +++ b/avconv.c > @@ -354,6 +354,7 @@ typedef struct OptionsContext { > int video_disable; > int audio_disable; > int subtitle_disable; > + int overlay_disable; > int data_disable; > > /* indexed by output file stream index */ > @@ -2581,6 +2582,7 @@ static int transcode_init(void) > codec->width = icodec->width; > codec->height = icodec->height; > break; > + case AVMEDIA_TYPE_OVERLAY: > case AVMEDIA_TYPE_DATA: > case AVMEDIA_TYPE_ATTACHMENT: > break; > @@ -3426,6 +3428,7 @@ static void add_input_streams(OptionsContext *o, > AVFormatContext *ic) > case AVMEDIA_TYPE_DATA: > case AVMEDIA_TYPE_SUBTITLE: > case AVMEDIA_TYPE_ATTACHMENT: > + case AVMEDIA_TYPE_OVERLAY: > case AVMEDIA_TYPE_UNKNOWN: > break; > default: > @@ -4017,6 +4020,15 @@ static OutputStream > *new_subtitle_stream(OptionsContext *o, AVFormatContext *oc) > return ost; > } > > +static OutputStream *new_overlay_stream(OptionsContext *o, AVFormatContext > *oc) > +{ > + OutputStream *ost; > + > + ost = new_output_stream(o, oc, AVMEDIA_TYPE_OVERLAY); > + ost->stream_copy = 1; > + return ost; > +} > + > /* arg format is "output-stream-index:streamid-value". */ > static int opt_streamid(OptionsContext *o, const char *opt, const char *arg) > { > @@ -4167,6 +4179,7 @@ static void opt_output_file(void *optctx, const char > *filename) > case AVMEDIA_TYPE_VIDEO: o->video_disable = 1; break; > case AVMEDIA_TYPE_AUDIO: o->audio_disable = 1; break; > case AVMEDIA_TYPE_SUBTITLE: o->subtitle_disable = 1; break; > + case AVMEDIA_TYPE_OVERLAY: o->overlay_disable = 1; break; > } > init_output_filter(ofilter, o, oc); > } > @@ -4219,6 +4232,15 @@ static void opt_output_file(void *optctx, const char > *filename) > break; > } > } > + > + /* overlay: pick first */ > + if (!o->overlay_disable && oc->oformat->overlay_codec != > CODEC_ID_NONE) { > + for (i = 0; i < nb_input_streams; i++) > + if (input_streams[i]->st->codec->codec_type == > AVMEDIA_TYPE_OVERLAY) { > + NEW_STREAM(overlay, i); > + break; > + } > + } > /* do something with data? */ > } else { > for (i = 0; i < o->nb_stream_maps; i++) { > @@ -4256,6 +4278,7 @@ loop_end: > case AVMEDIA_TYPE_AUDIO: ost = new_audio_stream(o, oc); > break; > case AVMEDIA_TYPE_SUBTITLE: ost = new_subtitle_stream(o, > oc); break; > case AVMEDIA_TYPE_DATA: ost = new_data_stream(o, oc); > break; > + case AVMEDIA_TYPE_OVERLAY: ost = new_overlay_stream(o, oc); > break; > case AVMEDIA_TYPE_ATTACHMENT: ost = new_attachment_stream(o, > oc); break; > default: > av_log(NULL, AV_LOG_FATAL, "Cannot map stream #%d:%d - > unsupported type.\n", > @@ -4907,6 +4930,9 @@ static const OptionDef options[] = { > { "scodec", HAS_ARG | OPT_SUBTITLE | OPT_FUNC2, > {(void*)opt_subtitle_codec}, "force subtitle codec ('copy' to copy stream)", > "codec" }, > { "stag", HAS_ARG | OPT_EXPERT | OPT_SUBTITLE | OPT_FUNC2, > {(void*)opt_subtitle_tag}, "force subtitle tag/fourcc", "fourcc/tag" }, > > + /* overlay options */ > + { "on", OPT_BOOL | OPT_OVERLAY | OPT_OFFSET, {.off = > OFFSET(overlay_disable)}, "disable overlay" }, > + > /* grab options */ > { "isync", OPT_BOOL | OPT_EXPERT | OPT_GRAB, {(void*)&input_sync}, "sync > read on input", "" }, > > diff --git a/cmdutils.h b/cmdutils.h > index 6fff47d..e69f5ec 100644 > --- a/cmdutils.h > +++ b/cmdutils.h > @@ -144,6 +144,7 @@ typedef struct { > an int containing element count in the > array. */ > #define OPT_TIME 0x10000 > #define OPT_DOUBLE 0x20000 > +#define OPT_OVERLAY 0x40000 > union { > void *dst_ptr; > int (*func_arg)(const char *, const char *); _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
