This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

HDMI out put is showing 1/8 part on the monitor and remaining part as garbage lines.(ti8148 and linux-04.01.00.07)

Hi,

I am using the ti8148 evm based customized board and linux-04.01.00.07. I have inserted the following modules and started the firmware as below

insmod syslink.ko
firmware_loader 1 dm814x_hdvicp.xem3 start
firmware_loader 2 dm814x_hdvpss.xem3 start
insmod vpss.ko sbufaddr=0xBFB00000 mode=hdmi:1080p-60 i2c_mode=0
insmod ti81xxfb.ko vram=0:24M,1:16M,2:6M
insmod ti81xxvo.ko

insmod ti81xxhdmi.ko
fbset -xres 480 -yres 272 -vxres 480 -vyres 272

and run the following script it was playing the video but only 1/8 part of the monitor is getting displayed properly and remaining part is showing as some lines

COMMAND:

root@dm814x-evm:~/lcd# gst-launch -v filesrc location=/usr/share/ti/data/videos/
dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264de
c ! omx_scaler ! v4l2sink device="/dev/video1" show-preroll-frame=false sync=fal
se min-queued-bufs=2 userpointer=false

RESPONSE:

Setting pipeline to PAUSED ...

** (gst-launch-0.10:1281): CRITICAL **: gst_v4l2sink_sync_rotation: assertion `v4l2_ioctl (fd, VIDIOC_S_CTRL, &control) >= 0' failed

** (gst-launch-0.10:1281): CRITICAL **: gst_v4l2sink_sync_rotation: assertion `v4l2_ioctl (fd, VIDIOC_S_CTRL, &control) >= 0' failed

** (gst-launch-0.10:1281): CRITICAL **: gst_v4l2sink_sync_flip: assertion `v4l2_ioctl (fd, VIDIOC_S_CTRL, &control) >= 0' failed
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-h264, framed=(boolean)false
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, framed=(boolean)false
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, framed=(boolean)false, stream-format=(string)byte-stream, alignment=(string)au, width=0
/GstPipeline:pipeline0/GstOmxH264Dec:omxh264dec0.GstPad:sink: caps = video/x-h264, framed=(boolean)false, stream-format=(string)byte-stream, alignment=(string)au, wid0
/GstPipeline:pipeline0/GstOmxH264Dec:omxh264dec0.GstPad:sink: caps = video/x-h264, framed=(boolean)false, stream-format=(string)byte-stream, alignment=(string)au, wid0
/GstPipeline:pipeline0/GstOmxH264Dec:omxh264dec0.GstPad:src: caps = video/x-raw-yuv-strided, width=(int)1920, height=(int)1088, format=(fourcc)NV12, rowstride=(int)201

(gst-launch-0.10:1281): GStreamer-CRITICAL **: _gst_util_uint64_scale_int: assertion `denom > 0' failed
/GstPipeline:pipeline0/GstOmxScaler:omxscaler0.GstPad:sink: caps = video/x-raw-yuv-strided, width=(int)1920, height=(int)1088, format=(fourcc)NV12, rowstride=(int)2041
/GstPipeline:pipeline0/GstOmxScaler:omxscaler0.GstPad:sink: caps = video/x-raw-yuv-strided, width=(int)1920, height=(int)1088, format=(fourcc)NV12, rowstride=(int)2041
/GstPipeline:pipeline0/GstOmxScaler:omxscaler0.GstPad:src: caps = video/x-raw-yuv, width=(int)1920, height=(int)1088, format=(fourcc)YUY2, framerate=(fraction)0/1, ine
/GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0.GstPad:sink: caps = video/x-raw-yuv
Inside videobuf_reqbufs
, width=(int)1920, height=(int)1088, format=(fourcc)YUY2, framerate=(fraction)0/1, interlaced=(boolean)false
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock

I have tried Pass this caps: 'video/x-raw-yuv, width=(int)1920, height=(int)1080' to the script but response was nothing on the monitor and throwing the error

WARNING: erroneous pipeline: could not link filesrc0 to h264parse0

COMMAND:

 gst-launch -v filesrc location=/usr/share/ti/data/videos/
dm816x_1080p_demo.264 ! 'video/x-raw-yuv,width=(int)1920,height=(int)1080' ! h26
4parse access-unit=true ! omx_h264dec ! omx_scaler ! v4l2sink device="/dev/video
1" show-preroll-frame=false sync=false min-queued-bufs=2 userpointer=false

RESPONSE:

WARNING: erroneous pipeline: could not link filesrc0 to h264parse0

  • Hello,

    sudheer singh1 said:
    I have tried Pass this caps: 'video/x-raw-yuv, width=(int)1920, height=(int)1080' to the script but response was nothing on the monitor and throwing the error

    You shall pass this caps :

    video/x-raw-yuv, width=(int)480, height=(int)272

    Based on this line:

    sudheer singh1 said:
    fbset -xres 480 -yres 272 -vxres 480 -vyres 272

    sudheer singh1 said:
     gst-launch -v filesrc location=/usr/share/ti/data/videos/
    dm816x_1080p_demo.264 ! 'video/x-raw-yuv,width=(int)1920,height=(int)1080' ! h26
    4parse access-unit=true ! omx_h264dec ! omx_scaler ! v4l2sink device="/dev/video
    1" show-preroll-frame=false sync=false min-queued-bufs=2 userpointer=false

    It is normal to see this error, the caps 'video/x-raw-yuv,width=(int)1920,height=(int)1080',  shall not be passed here between the parser and the filesrc. Main reason is that you are passing video/x-raw-yuv this shall be video/x-h264, if you want to add the caps between the filesrc and parser.

    Please add 'video/x-raw-yuv,width=(int)1920,height=(int)1080' in the correct place here if you want to scale to the display resolution 480x272 as in your case:


    ... ! ... !  omx_scaler  ! video/x-raw-yuv, width=(int)480, height=(int)272 ! sink


    Best Regards,

    Margarita

  • Hello,

    sudheer singh1 said:
    /GstPipeline:pipeline0/GstOmxScaler:omxscaler0.GstPad:src: caps = video/x-raw-yuv, width=(int)1920, height=(int)1088, format=(fourcc)YUY2, framerate=(fraction)0/1, ine
    /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0.GstPad:sink: caps = video/x-raw-yuv
    Inside videobuf_reqbufs
    , width=(int)1920, height=(int)1088, format=(fourcc)YUY2, framerate=(fraction)0/1, interlaced=(boolean)false

    Also I see height  = 1088 in the log. You can display 1080 not 1088 so in this case try:

    gst-launch -v filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler !  'video/x-raw-yuv, width=(int)1920, height=(int)1080' ! v4l2sink device="/dev/video1" show-preroll-frame=false sync=false min-queued-bufs=2 userpointer=false

    Best Regards,

    Margarita

  • Hi Margarita,

    I have tried the below script but the response is the same 1/8 part the screen is getting displayed

                                  gst-launch -v filesrc location=/usr/share/ti/data/videos/dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264dec ! omx_scaler !  'video/x-raw-yuv, width=(int)1920, height=(int)1080' ! v4l2sink device="/dev/video1" show-preroll-frame=false sync=false min-queued-bufs=2 userpointer=false

    I have tried below script as-well but no luck

    root@dm814x-evm:~/lcd# gst-launch -v filesrc location=/usr/share/ti/data/videos/
    dm816x_1080p_demo.264 ! 'video/x-h264' ! h264parse access-unit=true ! omx_h264de
    c ! omx_scaler ! 'video/x-raw-yuv, width=(int)480, height=(int)272' ! v4l2sink devic
    e="/dev/video1" show-preroll-frame=false sync=false min-queued-bufs=2 userpointe
    r=false

    1) In the linux-04.01.00.07/drivers/video/ti81xx/ti81xxhdmi/edid.c  source there are some comments as below,  is the present error related to this comments.

                    /*
                     * XXX since this is mainly for DVI monitors, should we only
                     * support VESA timings?  My monitor at home would pick
                     * 1920x1080 otherwise, but that seems to not work well (monitor
                     * blanks out and comes back, and picture doesn't fill full
                     * screen, but leaves a black bar on left (native res is
                     * 2048x1152). However if I only consider VESA timings, it picks
                     * 1680x1050 and the picture is stable and fills whole screen
                     */

    if so how can we resolve it.

    2) While inserting the ti81xxhdmi.ko file it was displaying the message like

    HDMI W1 rev 4.0
    I2C Bus Low?

    Is the present issue is related to I2C Buss low?

    Thanks,

    Sudheer

  • Hello,

    This output which you are seeing on the display is not from the pipeline.
    You shall see a video not a colorbar.

    I believe that about this issue there was a suggestions here:

    e2e.ti.com/.../399423
    e2e.ti.com/.../399139

    What it the display timing ?

    How the display is connected to the board?


    Best Regards,
    Margarita

  • Hi Margarita,
    As you mentioned it was playing video only, I attached that image to explain how much of the monitor screen is getting displayed. Suggestions link which you mentioned does not have any useful information as if I don't connect hdmi cable how can video be transferred to the hdmi monitor.

    I am suspecting if any code changes required in the Linux kernel related to linux-04.01.00.07/drivers/video/ti81xx/ti81xxhdmi/edid.c

    We are using hdmi to dvi cable to connect dvi connector monitor.


    Thanks,
    Sudheer.

  • Hello,

    Are you able to reproduce the issue on EVM?
    Or provide me steps how I can reproduce it on DM8148EVM.

    Best Regards,
    Margarita
  • Hello Sudheer,

    Please see this thread:

    e2e.ti.com/.../528114

    "HDMI is not compatible with DVI. Infact DVI output can be shown on HDMI TV since HDMI is backwards compatible with DVI. But HDMI output cant be shown on DVI, Most of the monitors support DVI and not HDMI."

    Could try to connect a HDMI to check are you will observe the issue. I assume that you will not.

    Best Regards,
    Margarita
  • Thanks Margarita,
    I could able to play the demo video.