[mythtv] Updated patch for directshow filters with MythTV (for CoreAVC)

Alan Nisota alannisota at gmail.com
Fri Feb 16 07:17:17 UTC 2007

Andrew Lyon wrote:
> On 2/15/07, Alan Nisota <alannisota at gmail.com> wrote:
>> Andrew Lyon wrote:
>> > The colour issue remains, "vertical, colour/chroma ghosting" is a good
>> > description, alan do you see the same on the other sample I sent?
>> I've been unable to see any chroma problems so far (but I haven't had a
>> chance to look at the new sample I got from you).  However, I saw this
>> on the Doom9 forum:
>>     Has anybody tried setting the output color space to RGB32? I want to
>>     use it because there are problems with the color range in YUV modes
>>     on NVidia cards (16-235 instead of 0-255). The reason I need this is
>>     because the Fix VMR9 color range is not working when DirectVobSub
>>     (or any other postprocessing) is used.
>> I'm not too familiar with the output formats, but we are using I420
>> which is a 12bit format like the other YUV modes.  If this is the
>> problem it would explain why I haven't seen the issue on the samples
>> I've looked at.  You can try to fix it via:
>> mythregistercodec -r ~/.mythtv/registry -k
>> "HKCU\\Software\\CoreCodec\\CoreAVC Pro\\VMR9Fix" -v "1"
>> It may or may not work though.  Currently we can only set string values
>> for registry keys, and this would normally be a DWORD.  If it doesn't
>> help, I'll put together a patch to allow setting the type.  It may be
>> that I'm barking up the wrong tree here, too.
> Tried it, no change.
Ok, one last msg, then I need to go to bed:
This crude hack fixes the color problem for me, so it does show that it 
is an alignment issue:
in avformatdecoder.cpp:
    avctx->get_buffer(avctx, picture);
    ret = DS_VideoDecoder_DecodeInternal(dshowdec, buf, len, 0, (char 
//    printf("\tret: %d\n", ret);
//    frm->type    = FF_BUFFER_TYPE_USER;
+    memmove(picture->data[0] + 1440*1088 + 1440 * 1088 / 4, 
picture->data[0] + 1440*1080 + 1440*1080 / 4, 1440*1080 / 4);
+    memmove(picture->data[0] + 1440*1088, picture->data[0] + 1440*1080, 
1440*1080 / 4);
    *got_picture_ptr = 1;

Note that I hardcoded the resolution so it'll only work for this one 
case, but it fixes the color offset on the samples I have.  Now that I 
know what is wrong, I'll clean it up so the res isn't hardcoded and add 
it to my patch tommorow.
If one of you UK folks could verify it is ok, that would be helpful.  
I'll roll up all the patches I've posted and create a new CoreAVC patch 
from them.

More information about the mythtv-dev mailing list