Index: libs/libavformat/mpegts.c
===================================================================
--- libs/libavformat/mpegts.c	(revision 10421)
+++ libs/libavformat/mpegts.c	(working copy)
@@ -648,6 +648,16 @@
 
         if (dvbci.txt_type && (stream_type == STREAM_TYPE_PRIVATE_DATA))
             stream_type = STREAM_TYPE_VBI_DVB;
+
+        if ((dvbci.component_tag >= 0) && (stream_type == STREAM_TYPE_PRIVATE_DATA))
+        {
+            /* Audio and video are sometimes encoded in private streams labelled with a component tag. */
+            if (dvbci.language[0])
+                stream_type = STREAM_TYPE_AUDIO_MPEG2;
+            else
+                stream_type = STREAM_TYPE_VIDEO_MPEG2;
+        }
+
 #ifdef DEBUG_SI
         av_log(NULL, AV_LOG_DEBUG, "stream_type=%d pid=0x%x\n", stream_type, pid);
 #endif
@@ -845,7 +855,6 @@
         case STREAM_TYPE_AUDIO_AAC:
         case STREAM_TYPE_AUDIO_AC3:
         case STREAM_TYPE_AUDIO_DTS:
-        case STREAM_TYPE_PRIVATE_DATA:
         case STREAM_TYPE_VBI_DVB:
         case STREAM_TYPE_SUBTITLE_DVB:
         case STREAM_TYPE_DSMCC_B:
@@ -1420,7 +1429,6 @@
             codec_type = CODEC_TYPE_DATA;
             codec_id = CODEC_ID_DSMCC_B;
             break;
-        case STREAM_TYPE_PRIVATE_DATA:
         default:
             if (code >= 0x1c0 && code <= 0x1df) {
                 codec_type = CODEC_TYPE_AUDIO;
