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.

dm385 1080i Field incomplete

Other Parts Discussed in Thread: DM385

Hi, TI experters

I have a problem when the input rusolution is 1080i/60hz .

we have konw  that the interlace resolution include odd and even field as one frame, in TI provided RDK

also has a variable "fieldId" in struct VCODEC_BITSBUF_S ,but we find the variable "fieldId" never

changed after get encode date(Venc_getBitstreamBuffer),it's always zero.we don't use de-interlace link,the output

video resoluton is also 1080i/60hz,we test the output video,and the filed is incomplete ,only first filed.Do you have

any suggest to help us ?

thanks.

  

 

typedef struct {

    UInt32              reserved;     /**< Used internally, USER MUST NOT MODIFY THIS VALUE */

    VENC_CHN            chnId;     /**< Encoder/Decoder channel ID 0..(VENC_CHN_MAX-1)  */

    VENC_STRM           strmId;     /**< Encoder stream ID, not valid for decoder, 0..(VENC_STRM_MAX-1)  */

    VCODEC_TYPE_E       codecType;     /**< Video compression format */

    VCODEC_FRAME_TYPE_E frameType;     /**< Compressed frame type */

    UInt32              bufSize;     /**< Size of buffer, in bytes */

    UInt32              filledBufSize;     /**< Actual size of bistream in buffer, in bytes */

    UInt32              mvDataOffset;     /**< Actual offset to mv data bistream in buffer, in bytes */

    UInt32              mvDataFilledSize;     /**< Actual size of mv data bistream in buffer, in bytes */

    Void               *bufVirtAddr;     /**< User Virtual Space Buffer Address, can be used with write() or fwrite() APIs */

    Void               *bufPhysAddr;     /**< User System Physical Buffer Address, can be used with EDMA APIs */

    UInt32              timestamp;     /**< Capture or Display Frame timestamp, in msec */

    UInt32              upperTimeStamp;     /**< Original Capture time stamp:Upper 32 bit value*/

    UInt32              lowerTimeStamp;     /**< Original Capture time stamp: Lower 32 bit value*/

    UInt32              encodeTimestamp;     /**< Time stamp after encode is complete */

    UInt32              numTemporalLayerSetInCodec;     /**< numTemporalLayer which has been configured in         * the create time of h264 encoder */

    UInt32              temporalId;     /**< SVC TemporalId */

    UInt32              fieldId;     /**< 0: Even field or Frame based, 1: Odd Field */

    UInt32              frameWidth;     /**< Width of frame, in pixels */

    UInt32              frameHeight;     /**< Height of frame, in lines */

    UInt32              doNotDisplay;     /**< Flag indicating frame should not be displayed      *   This is useful when display should start from a      *   particular frame.      *   This is temporary until Avsync suuports seek functionality*/ 

UInt32 bottomFieldBitBufSize;      /**< Size of the bottom field Bitstream. Filled by field Merged       *   interlaced encoders     */ 

UInt32 seqId;     /**< Sequence Id associated with this frame. The video       *  backend will display a frame only if current sequenceid       *  configured in Vdis matches the seqId associated with the frame       *  The current sequence id (called display sequence id) can be       *  set when invoking a Vdis API such as PLAY/TPLAY/SCAN etc.       *  This feature enables flushing of frames queued withing mcfw       *  when application switches from one play state to another       *  such scan -> play and does not want to display the older       *  scan mode frames in play state       */  

UInt32 inputFileChanged;     /**< This need to be set to 1 only for the first frame, if the input   file is changed. This info is required for the decoder to start          display from an IDR frame. IF this is set decoder skip all frames    till it find the first IDR frame and avoid any garbage display */          

} VCODEC_BITSBUF_S;

 

 

 VCODEC_BITSBUF_S *pBuf;

Venc_getBitstreamBuffer(&bitsBuf, TIMEOUT_NO_WAIT);

 

 

  • fieldId is not populated in VCODEC_BITBUF_S structure. It is always 0 for both top field and bottom field. Both the fields will be correctly encoded. Do you see wrong image when you playback the stream with PC player like Elecard

  • Thanks for your reply. We have verified the field of 1080i/60,the testing folw see picture below.

    We tested two kinds of cases, one is direct test signal generator output video, another is  test the  video after the processing of the DM385, test results as shown below.

    We considered the video signal is not synchronized.

    We have another problem , TRS Pos Error (EAV, SAV Error in SDI) ,may be the same reason.

  • we set the TIMING of 1080i60hz as below

    #define VDIS_TIMINGS_1080I_60 "74250,1920/88/148/44,1080/2/15/5,0"

    but from the <<CEA-861>> specification, we find that the timing is different between odd field and even field.

    Can  you help us to support the 1080i display?

  • HI, I also have the same problem with you. The GS2972 can not detect 1080I50 or 1080I60 , but 1080P30 is ok. when I read the 0004 register of GS2972. The V & H have been locked , but the VD_STD is not locked. By the way LINES_S_PER_FRAME and WORDS_PER_LINE is right, but ACTIVE_WORDS_PER_LINE and ACTIVE_LINES_PER_FRAME is wrong.
    The HD_VENC_D register have bee check with Bt.1120. I can not find any problem. So do you fix the problem ? Can you give me your HD_VENC_D register value to help me?