Ticket #1799: mpegts.patch.txt

File mpegts.patch.txt, 1.4 KB (added by dm@…, 19 years ago)
Line 
1Index: libs/libavformat/mpegts.c
2===================================================================
3--- libs/libavformat/mpegts.c   (revision 10421)
4+++ libs/libavformat/mpegts.c   (working copy)
5@@ -648,6 +648,16 @@
6 
7         if (dvbci.txt_type && (stream_type == STREAM_TYPE_PRIVATE_DATA))
8             stream_type = STREAM_TYPE_VBI_DVB;
9+
10+        if ((dvbci.component_tag >= 0) && (stream_type == STREAM_TYPE_PRIVATE_DATA))
11+        {
12+            /* Audio and video are sometimes encoded in private streams labelled with a component tag. */
13+            if (dvbci.language[0])
14+                stream_type = STREAM_TYPE_AUDIO_MPEG2;
15+            else
16+                stream_type = STREAM_TYPE_VIDEO_MPEG2;
17+        }
18+
19 #ifdef DEBUG_SI
20         av_log(NULL, AV_LOG_DEBUG, "stream_type=%d pid=0x%x\n", stream_type, pid);
21 #endif
22@@ -845,7 +855,6 @@
23         case STREAM_TYPE_AUDIO_AAC:
24         case STREAM_TYPE_AUDIO_AC3:
25         case STREAM_TYPE_AUDIO_DTS:
26-        case STREAM_TYPE_PRIVATE_DATA:
27         case STREAM_TYPE_VBI_DVB:
28         case STREAM_TYPE_SUBTITLE_DVB:
29         case STREAM_TYPE_DSMCC_B:
30@@ -1420,7 +1429,6 @@
31             codec_type = CODEC_TYPE_DATA;
32             codec_id = CODEC_ID_DSMCC_B;
33             break;
34-        case STREAM_TYPE_PRIVATE_DATA:
35         default:
36             if (code >= 0x1c0 && code <= 0x1df) {
37                 codec_type = CODEC_TYPE_AUDIO;