Hi  Marcelo Guedes,

Change the source code of  "capture.c" as shown below to make encoder of
DM6467 demo working for 1080I as shown below and compile it.

    /* Calculate the dimensions of a video standard given a color space */
#if RES_720
    if (BufferGfx_calcDimensions(VideoStd_720P_60,ColorSpace_YUV422PSEMI,
&gfxAttrs.dim) < 0) {
#else
    if (BufferGfx_calcDimensions(VideoStd_1080I_30, ColorSpace_YUV422PSEMI,
&gfxAttrs.dim) < 0) {
#endif
        ERR("Failed to calculate Buffer dimensions\n");
        cleanup(THREAD_FAILURE);
    }

    /* Calculate buffer size needed of a video standard given a color space
*/
#if RES_720
    bufSize = BufferGfx_calcSize(VideoStd_720P_60, ColorSpace_YUV422PSEMI);
#else
    bufSize = BufferGfx_calcSize(VideoStd_1080I_30, ColorSpace_YUV422PSEMI);
#endif

    if (bufSize < 0) {
        ERR("Failed to calculate size for capture driver buffers\n");
        cleanup(THREAD_FAILURE);
    }

    /* Create a table of buffers to use with the device drivers */
    gfxAttrs.colorSpace = ColorSpace_YUV422PSEMI;
    hBufTab = BufTab_create(NUM_DRIVER_BUFS, bufSize,
                            BufferGfx_getBufferAttrs(&gfxAttrs));

    if (hBufTab == NULL) {
        ERR("Failed to allocate contiguous buffers\n");
        cleanup(THREAD_FAILURE);
    }

    /* Create capture device driver instance */
    cAttrs.numBufs = NUM_CAPTURE_BUFS;
    hCapture = Capture_create(hBufTab, &cAttrs);

    if (hCapture == NULL) {
        ERR("Failed to create capture device, "
            "720P component input connected?\n");
        cleanup(THREAD_FAILURE);
    }

    videoStd = Capture_getVideoStd(hCapture);

    /* We only support 720P capture */
#if RES_720
    if (videoStd != VideoStd_720P_50 && videoStd != VideoStd_720P_60) {
#else
    if (videoStd != VideoStd_1080I_30 && videoStd != VideoStd_1080P_30) {
#endif
        ERR("Need 720P composite input to this demo\n");
        cleanup(THREAD_FAILURE);
    }



Then you should change the memory configuration of the encoder to work for
1080I. So please change the loadmodules.sh script as shown below before
running the encode demo.

# insert cmemk, tell it to occupy physical 120MB-200MB and create enough
# contiguous buffers for the worst case requirements of the demos.
rmmod cmemk.ko
# one times 4MB, 10 times 3.5 MB,10 times 1.5MB etc
#insmod cmemk.ko phys_start=0x87800000 phys_end=0x8ba00000
pools=1x4147200,10x3458400,10x1434240,11x663552,4x60000

# 10 times 4MB, 1 times 3.5 MB,10 times 1.5MB etc
insmod cmemk.ko phys_start=0x87800000 phys_end=0x8ba00000
pools=10x4147200,1x3458400,10x1434240,11x663552,4x60000

# insert dsplinkk, tell it that DSP's DDR is at physical 250MB-254MB
rmmod dsplinkk.ko
insmod dsplinkk.ko

# alter dma queue mapping for better visual performance
if [ -f mapdmaq-hd ]
then
    ./mapdmaq-hd
fi

# make /dev/dsplink
rm -f /dev/dsplink
mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0


This should make it working for 1080.


Currently the encoder will not encode at 30 frames persecond. I do not
remember exactly how many frames per second it can encode.




Regards,
Mahendra kumar
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to