# compile with --enable-ffmpeg-pthreads --enable-pthreads --- mythtv/libs/libavformat/mpegts.c.orig 2007-11-10 18:08:03.000000000 +0000 +++ mythtv/libs/libavformat/mpegts.c 2007-11-10 18:09:02.000000000 +0000 @@ -1608,9 +1608,11 @@ pkt->pts = pes->pts; pkt->dts = pes->dts; pkt->pos = pes->startpos; - /* reset pts values */ - pes->pts = AV_NOPTS_VALUE; - pes->dts = AV_NOPTS_VALUE; + if (pes->st->codec->codec_id != CODEC_ID_H264) { + /* reset pts values */ + pes->pts = AV_NOPTS_VALUE; + pes->dts = AV_NOPTS_VALUE; + } ts->stop_parse = 1; return; } --- mythtv/libs/libmythtv/avformatdecoder.cpp.orig 2007-11-10 18:14:13.000000000 +0000 +++ mythtv/libs/libmythtv/avformatdecoder.cpp 2007-11-10 18:17:10.000000000 +0000 @@ -3054,9 +3054,14 @@ pts = 0; AVStream *curstream = ic->streams[pkt->stream_index]; - - if (pkt->dts != (int64_t)AV_NOPTS_VALUE) - pts = (long long)(av_q2d(curstream->time_base) * pkt->dts * 1000); + + if (curstream->codec->codec_id == CODEC_ID_H264) { + if (pkt->pts != (int64_t)AV_NOPTS_VALUE) + pts = (long long)(av_q2d(curstream->time_base) * pkt->pts * 1000); + } else { + if (pkt->dts != (int64_t)AV_NOPTS_VALUE) + pts = (long long)(av_q2d(curstream->time_base) * pkt->dts * 1000); + } if (ringBuffer->isDVD() && curstream->codec->codec_type == CODEC_TYPE_VIDEO) Index: libs/libmythtv/nuppeldecoder.cpp =================================================================== --- mythtv/libs/libmythtv/nuppeldecoder.cpp (revision 14851) +++ mythtv/libs/libmythtv/nuppeldecoder.cpp (working copy) @@ -671,6 +671,14 @@ return false; } + int thread_count = 2; + if (CODEC_ID_H264 == mpa_vidctx->codec_id && mpa_vidctx->thread_count != thread_count) + { + avcodec_thread_init(mpa_vidctx, thread_count); + mpa_vidctx->thread_count = thread_count; + mpa_vidctx->skip_loop_filter = AVDISCARD_ALL; + } + return true; } Index: libs/libmythtv/avformatdecoder.cpp =================================================================== --- mythtv/libs/libmythtv/avformatdecoder.cpp (revision 14851) +++ mythtv/libs/libmythtv/avformatdecoder.cpp (working copy) @@ -1435,6 +1435,14 @@ enc->bit_rate = 500000; // HACK -- end + int thread_count = 2; + if (CODEC_ID_H264 == enc->codec_id && enc->thread_count != thread_count) + { + avcodec_thread_init(enc, thread_count); + enc->thread_count = thread_count; + enc->skip_loop_filter = AVDISCARD_ALL; + } + bitrate += enc->bit_rate; if (novideo) break;