Jason Flynn G7OCD wrote:
Great stuff! I've applied this patch to 0.18
and I can now change channel :)


Doesn't seem to work for me :(

Before I applied the patch I got garbage
video if I changed DVB channel, now frontend just exits.
Channel changes are fine with non-DVB or
if I switch off XvMC.
I'm using XvMC with latest Nvidia driver
with Myth 0.18 + the patch in this thread.


Not sure what logging switch would be useful
to give debug output... let me know and I'll
post some logs.

J

Send instant messages to your online friends http://uk.messenger.yahoo.com _______________________________________________
mythtv-dev mailing list
[email protected]
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev

Hi,

The patch is working for you :)
Well, it is exiting with an error message now as a parser has not been
defined for the XVMC Codec only the XVMC_VLD.
I include a revised patch that supports TS changes with both
the XVMC_VLD and XVMC Codecs. Please try it out, I don't have
an NVidia card ...

Note that other Codecs will fail with an Error message and
exit if they are not supported as stated in my previous email.

Terry
Index: libs/libavcodec/parser.c
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libavcodec/parser.c,v
retrieving revision 1.10
diff -u -r1.10 parser.c
--- libs/libavcodec/parser.c	1 Feb 2005 05:09:30 -0000	1.10
+++ libs/libavcodec/parser.c	1 May 2005 07:50:35 -0000
@@ -811,7 +811,14 @@
 #endif
 
 AVCodecParser mpegvideo_parser = {
-    { CODEC_ID_MPEG1VIDEO, CODEC_ID_MPEG2VIDEO },
+    { CODEC_ID_MPEG1VIDEO, CODEC_ID_MPEG2VIDEO,
+#ifdef USING_XVMC_VLD
+        CODEC_ID_MPEG2VIDEO_XVMC_VLD,
+#endif
+#ifdef USING_XVMC
+        CODEC_ID_MPEG2VIDEO_XVMC,
+#endif
+    },
     sizeof(ParseContext1),
     NULL,
     mpegvideo_parse,
@@ -843,3 +850,4 @@
     NULL,
 };
 #endif
+
Index: libs/libavformat/utils.c
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libavformat/utils.c,v
retrieving revision 1.32
diff -u -r1.32 utils.c
--- libs/libavformat/utils.c	31 Jan 2005 17:15:16 -0000	1.32
+++ libs/libavformat/utils.c	1 May 2005 07:50:38 -0000
@@ -900,6 +900,8 @@
                     if (!st->parser) {
                         /* no parser available : just output the raw packets */
                         st->need_parsing = 0;
+			av_log(s, AV_LOG_ERROR, "Parser not found for Codec Id: %d !\n", st->codec.codec_id);
+			exit(1);
                     }
 		}
 	    }
Index: libs/libmythtv/siparser.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/siparser.cpp,v
retrieving revision 1.16
diff -u -r1.16 siparser.cpp
--- libs/libmythtv/siparser.cpp	15 Apr 2005 00:46:08 -0000	1.16
+++ libs/libmythtv/siparser.cpp	1 May 2005 07:50:42 -0000
@@ -657,6 +657,7 @@
 
     if (Table[PMT]->AddSection(head,head->table_id_ext,0))
         return;
+    int Video_taken=0;
 
     SIPARSER(QString("PMT ServiceID: %1 Version = %2").arg(head->table_id_ext).arg(head->version));
 
@@ -724,6 +725,17 @@
             case 0x04:
                 e.Type = ES_TYPE_AUDIO_MPEG2;
                 break;
+            case 0x06:
+                if (!Video_taken)
+                {
+                    e.Type = ES_TYPE_VIDEO_MPEG2;
+                    Video_taken=1;
+                }
+                else
+                {
+                    e.Type = ES_TYPE_AUDIO_MPEG2;
+                }
+                break;
             case 0x08:
             case 0x0B:
                 e.Type = ES_TYPE_DATA;
@@ -781,6 +793,7 @@
 
                     case 0x59: // Subtitling Descriptor
                         ParseDescriptorSubtitling(descriptor, descriptor_len);
+                        if (e.Type == ES_TYPE_VIDEO_MPEG1) Video_taken=0; 
                         e.Type = ES_TYPE_SUBTITLE;
                         break;
 
@@ -806,6 +819,7 @@
                 break;
             case ES_TYPE_VIDEO_MPEG2:
                 e.Description = QString("MPEG-2 Video");
+                if (e.Orig_Type == 0x06) p.PCRPID = e.PID;
                 p.hasVideo = true;
                 break;
             case ES_TYPE_AUDIO_MPEG1:
_______________________________________________
mythtv-dev mailing list
[email protected]
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev

Reply via email to