[FFmpeg-cvslog] Flag DVB subtitles for the hard hearing appropriately using their component_type id .

Hendrik Leppkes git
Tue Mar 8 02:43:30 CET 2011


ffmpeg | branch: master | Hendrik Leppkes <h.leppkes at gmail.com> | Sun Feb 20 02:38:23 2011 +0100| [a2fc93f7005ee97cf17a07caac0f07f0537e2f59] | committer: Michael Niedermayer

Flag DVB subtitles for the hard hearing appropriately using their component_type id.

This is based on the component_type definition in the DVB SI spec [1].

[1]: http://www.dvb.org/technology/standards/a038_DVB-SI_dEN300468v1.12.1.pdf

Signed-off-by: Ronald S. Bultje <rsbultje at gmail.com>
(cherry picked from commit 789936dbbda60990220b80769ed75702775ea0b2)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a2fc93f7005ee97cf17a07caac0f07f0537e2f59
---

 libavformat/mpegts.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 1b6f5e3..3859068 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -935,7 +935,17 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
         language[1] = get8(pp, desc_end);
         language[2] = get8(pp, desc_end);
         language[3] = 0;
-        get8(pp, desc_end);
+        /* hearing impaired subtitles detection */
+        switch(get8(pp, desc_end)) {
+        case 0x20: /* DVB subtitles (for the hard of hearing) with no monitor aspect ratio criticality */
+        case 0x21: /* DVB subtitles (for the hard of hearing) for display on 4:3 aspect ratio monitor */
+        case 0x22: /* DVB subtitles (for the hard of hearing) for display on 16:9 aspect ratio monitor */
+        case 0x23: /* DVB subtitles (for the hard of hearing) for display on 2.21:1 aspect ratio monitor */
+        case 0x24: /* DVB subtitles (for the hard of hearing) for display on a high definition monitor */
+        case 0x25: /* DVB subtitles (for the hard of hearing) with plano-stereoscopic disparity for display on a high definition monitor */
+            st->disposition |= AV_DISPOSITION_HEARING_IMPAIRED;
+            break;
+        }
         if (st->codec->extradata) {
             if (st->codec->extradata_size == 4 && memcmp(st->codec->extradata, *pp, 4))
                 av_log_ask_for_sample(fc, "DVB sub with multiple IDs\n");




More information about the ffmpeg-cvslog mailing list