VP8 Encoder Sample Application and run time control parameters

Hi,
I would like to verify 1080p@30fps VP8 encoding for a particular use case on TX1. But I am unable to find a independent sample application to run on VP8 encoding. Looks like only H.264 and H265 V4l2 interface based sample application is available.

Can anyone point to-

  1. Sample application to showcase VP8 encoding with V4L2 or any other interface? (file read → enc → file write)?
  2. Sample application to showcase VP8 encoding with V4L2 or any other interface?(Camera capture → enc → file_write)?

Also, I am unable to be see a run time control parameter to change encode resolution in documentation. Is this limitation or no API has been exposed?

Any information on above items will be extremely useful. Thanks in advance!

Cheers,
Avi

Hi Avi,
AS of now we support vp8 encoding/decoding in gstreamer frameworks. Please refer to user guide for examples:

Hi DaneLLL,
Thanks a lot for the response. We did verify the vp8 encoding taking gstreamer framework as reference.

As part of requirement also need to verify run time reference frame type configurations of previous, golden and alternate frames for encoder. Based on the documentation and OMX header file details, we need to use index OMX_IndexConfigVideoVp8ReferenceFrame and the OMX_VIDEO_VP8REFERENCEFRAMETYPE structure to achieve this.

As I could not find usage of this configuration in gstreamer source code shared, tried setting these reference frames using OMX_GetConfig / OMX_SetConfig API. However, OMX_GetConfig / OMX_SetConfig API returned OMX_ErrorUnsupportedIndex error. Could you please confirm if this configuration is supported for H/W VP8 encoder?

Let me know.

Have copied sample code written or your reference

    OMX_ERRORTYPE eError = OMX_ErrorNone;
    OMX_VIDEO_VP8REFERENCEFRAMETYPE vp8RefFrameType;
    VENC_AC_OMX_INIT_PARAM (&vp8RefFrameType);

    eError = OMX_GetConfig (h_enc_comp,
                            OMX_IndexConfigVideoVp8ReferenceFrame, 
                            &vp8RefFrameType);
    if (eError == OMX_ErrorNone)
    {
        vp8RefFrameType.bUsePreviousFrame = OMX_TRUE;
        vp8RefFrameType.bUseGoldenFrame = OMX_TRUE;
        vp8RefFrameType.bUseAlternateFrame = OMX_TRUE;

        eError = OMX_SetConfig (h_enc_comp,
                               OMX_IndexConfigVideoVp8ReferenceFrame, 
                               &vp8RefFrameType);
        if (eError != OMX_ErrorNone)
        {
            printf("Setting frame interval failed\n");
        }
        else
        {
            printf("OMX_SetConfig failed for OMX_VIDEO_VP8REFERENCEFRAMETYPE\n");
        }
    }
    else
    {
        //OMX_ErrorUnsupportedIndex is returned!
        printf("OMX_GetConfig failed for OMX_VIDEO_VP8REFERENCEFRAMETYPE %x\n",eError);
    }

Thanks,
Avi

Hi Avi,
OMX_IndexConfigVideoVp8ReferenceFrame is not supported on TX1 and TX2.