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);