Hi:

In my experiment, it seems that the resizer will hang only if the input
size is too small, while bigger is okay. So, to be safe, you can keep
your input size and output size as it is, and try some smaller RSZ. If
you follow the formula in sprue38a, then 

            hrsz = ((iw-4)<<8 - 16 - 32*sph) / (ow-1) = ((240-4)*256 -
16)/239 = 252

            vrsz = ((ih-4)<<8 - 16 - 32*spv) / (oh-1) = ((320-4)*256 -
16)/319 = 253

 

If you use these rsz to get back the required input width and height,
the result is a smaller 239x319, which is due to the truncation of the
fraction number. Sprue38A is not clear about whether we should use
truncation or rounding. If use rounding, then hrsz=253 and vrsz=254, the
required input size will be back to 240x320. It happens so that if you
keep the input size as 240x320, the resizer will work in both cases. 

 

The other thing, although not related to the hanging issue, your filter
coefficients seem to be wrong, since the resizer only performs dot
product without any averaging operation, your should set 0.25 for each
coefficient, i.e. set 0x00400040 for each register. And because the RSZ
is not exactly 256, you might want to set the other filter also. Just
set all to 0x00400040.

 

Regards

Zheng Lei

 

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On
Behalf Of Pradeep Sriram
Sent: Tuesday, January 16, 2007 11:18 PM
To: davinci-linux-open-source@linux.davincidsp.com
Subject: Re: Resizer stuck indefinitely

 

Hi Carlos ,
I modified the registers as per your comments.
regw (0x00F30146,    IN_SIZE);

Even with these new values, the resizer is hung. Am I missing some
configuration?

Regards,
Pradeep Sriram



On 1/12/07, Pradeep Sriram <[EMAIL PROTECTED]> wrote:

Hi all,
I have written a simple char driver for the resizer. The resizer seems
to be stuck indefinitely (ie) the busy flag is stuck at 1. Given below
is my register configuration for simple video pass through. I am not
sure what is wrong. Please help. 

regw (0x30040100,    RSZ_CNT );// Bilinear, sdram, interleaved, YC,
RSZ=1X, 1X(pass through) 
regw (0x00F00140,    IN_SIZE);//240x320 
regw (0x00F00140,    OUT_SIZE);//240x320 
regw (0x00000280,    SDR_INOFF);//640 
regw (0x00000280,    SDR_OUTOFF);//640 

// Set 1st phase filters to 1 for pass through 
       regw (0x01000100,    HFILT10 ); 
       regw (0x01000100,    HFILT32 ); 

   regw (0x01000100,    VFILT10 ); 
       regw (0x01000100,    VFILT32); 

Memory_getPhysicalAddress used to get SDRAM physical addresses. Input
buffer is got by Memory_contigAlloc and output buffer is frame buffer. 

Thanks & Regards,
Pradeep Sriram

 

_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to