Loading media/libstagefright/codecs/m4v_h263/dec/M4vH263Decoder.cpp +17 −8 Original line number Diff line number Diff line Loading @@ -23,8 +23,8 @@ #include "mp4dec_api.h" #include <OMX_Component.h> #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/MediaBufferGroup.h> #include <media/stagefright/MediaDebug.h> #include <media/stagefright/MediaDefs.h> #include <media/stagefright/MediaErrors.h> #include <media/stagefright/MetaData.h> Loading Loading @@ -106,7 +106,7 @@ status_t M4vH263Decoder::start(MetaData *) { int32_t vol_size = 0; if (meta->findData(kKeyESDS, &type, &data, &size)) { ESDS esds((const uint8_t *)data, size); CHECK_EQ(esds.InitCheck(), OK); CHECK_EQ(esds.InitCheck(), (status_t)OK); const void *codec_specific_data; size_t codec_specific_data_size; Loading Loading @@ -185,7 +185,7 @@ status_t M4vH263Decoder::read( ReadOptions::SeekMode mode; if (options && options->getSeekTo(&seekTimeUs, &mode)) { seeking = true; CHECK_EQ(PVResetVideoDecoder(mHandle), PV_TRUE); CHECK_EQ((int)PVResetVideoDecoder(mHandle), PV_TRUE); } MediaBuffer *inputBuffer = NULL; Loading Loading @@ -223,19 +223,28 @@ status_t M4vH263Decoder::read( return UNKNOWN_ERROR; } int32_t width, height; PVGetVideoDimensions(mHandle, &width, &height); if (width != mWidth || height != mHeight) { int32_t disp_width, disp_height; PVGetVideoDimensions(mHandle, &disp_width, &disp_height); int32_t buf_width, buf_height; PVGetBufferDimensions(mHandle, &buf_width, &buf_height); if (buf_width != mWidth || buf_height != mHeight) { ++mNumSamplesOutput; // The client will never get to see this frame. inputBuffer->release(); inputBuffer = NULL; mWidth = width; mHeight = height; mWidth = buf_width; mHeight = buf_height; mFormat->setInt32(kKeyWidth, mWidth); mFormat->setInt32(kKeyHeight, mHeight); CHECK_LE(disp_width, buf_width); CHECK_LE(disp_height, buf_height); mFormat->setRect(kKeyCropRect, 0, 0, disp_width - 1, disp_height - 1); return INFO_FORMAT_CHANGED; } Loading media/libstagefright/codecs/m4v_h263/dec/include/mp4dec_api.h +1 −0 Original line number Diff line number Diff line Loading @@ -159,6 +159,7 @@ extern "C" Bool PVDecodeVopBody(VideoDecControls *decCtrl, int32 buffer_size[]); void PVDecPostProcess(VideoDecControls *decCtrl, uint8 *outputYUV); OSCL_IMPORT_REF void PVGetVideoDimensions(VideoDecControls *decCtrl, int32 *display_width, int32 *display_height); OSCL_IMPORT_REF void PVGetBufferDimensions(VideoDecControls *decCtrl, int32 *buf_width, int32 *buf_height); OSCL_IMPORT_REF void PVSetPostProcType(VideoDecControls *decCtrl, int mode); uint32 PVGetVideoTimeStamp(VideoDecControls *decoderControl); int PVGetDecBitrate(VideoDecControls *decCtrl); Loading media/libstagefright/codecs/m4v_h263/dec/src/pvdec_api.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -722,6 +722,12 @@ OSCL_EXPORT_REF void PVGetVideoDimensions(VideoDecControls *decCtrl, int32 *disp *display_height = video->displayHeight; } OSCL_EXPORT_REF void PVGetBufferDimensions(VideoDecControls *decCtrl, int32 *width, int32 *height) { VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData; *width = video->width; *height = video->height; } /* ======================================================================== */ /* Function : PVGetVideoTimeStamp() */ /* Date : 04/27/2000, 08/29/2000 */ Loading Loading
media/libstagefright/codecs/m4v_h263/dec/M4vH263Decoder.cpp +17 −8 Original line number Diff line number Diff line Loading @@ -23,8 +23,8 @@ #include "mp4dec_api.h" #include <OMX_Component.h> #include <media/stagefright/foundation/ADebug.h> #include <media/stagefright/MediaBufferGroup.h> #include <media/stagefright/MediaDebug.h> #include <media/stagefright/MediaDefs.h> #include <media/stagefright/MediaErrors.h> #include <media/stagefright/MetaData.h> Loading Loading @@ -106,7 +106,7 @@ status_t M4vH263Decoder::start(MetaData *) { int32_t vol_size = 0; if (meta->findData(kKeyESDS, &type, &data, &size)) { ESDS esds((const uint8_t *)data, size); CHECK_EQ(esds.InitCheck(), OK); CHECK_EQ(esds.InitCheck(), (status_t)OK); const void *codec_specific_data; size_t codec_specific_data_size; Loading Loading @@ -185,7 +185,7 @@ status_t M4vH263Decoder::read( ReadOptions::SeekMode mode; if (options && options->getSeekTo(&seekTimeUs, &mode)) { seeking = true; CHECK_EQ(PVResetVideoDecoder(mHandle), PV_TRUE); CHECK_EQ((int)PVResetVideoDecoder(mHandle), PV_TRUE); } MediaBuffer *inputBuffer = NULL; Loading Loading @@ -223,19 +223,28 @@ status_t M4vH263Decoder::read( return UNKNOWN_ERROR; } int32_t width, height; PVGetVideoDimensions(mHandle, &width, &height); if (width != mWidth || height != mHeight) { int32_t disp_width, disp_height; PVGetVideoDimensions(mHandle, &disp_width, &disp_height); int32_t buf_width, buf_height; PVGetBufferDimensions(mHandle, &buf_width, &buf_height); if (buf_width != mWidth || buf_height != mHeight) { ++mNumSamplesOutput; // The client will never get to see this frame. inputBuffer->release(); inputBuffer = NULL; mWidth = width; mHeight = height; mWidth = buf_width; mHeight = buf_height; mFormat->setInt32(kKeyWidth, mWidth); mFormat->setInt32(kKeyHeight, mHeight); CHECK_LE(disp_width, buf_width); CHECK_LE(disp_height, buf_height); mFormat->setRect(kKeyCropRect, 0, 0, disp_width - 1, disp_height - 1); return INFO_FORMAT_CHANGED; } Loading
media/libstagefright/codecs/m4v_h263/dec/include/mp4dec_api.h +1 −0 Original line number Diff line number Diff line Loading @@ -159,6 +159,7 @@ extern "C" Bool PVDecodeVopBody(VideoDecControls *decCtrl, int32 buffer_size[]); void PVDecPostProcess(VideoDecControls *decCtrl, uint8 *outputYUV); OSCL_IMPORT_REF void PVGetVideoDimensions(VideoDecControls *decCtrl, int32 *display_width, int32 *display_height); OSCL_IMPORT_REF void PVGetBufferDimensions(VideoDecControls *decCtrl, int32 *buf_width, int32 *buf_height); OSCL_IMPORT_REF void PVSetPostProcType(VideoDecControls *decCtrl, int mode); uint32 PVGetVideoTimeStamp(VideoDecControls *decoderControl); int PVGetDecBitrate(VideoDecControls *decCtrl); Loading
media/libstagefright/codecs/m4v_h263/dec/src/pvdec_api.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -722,6 +722,12 @@ OSCL_EXPORT_REF void PVGetVideoDimensions(VideoDecControls *decCtrl, int32 *disp *display_height = video->displayHeight; } OSCL_EXPORT_REF void PVGetBufferDimensions(VideoDecControls *decCtrl, int32 *width, int32 *height) { VideoDecData *video = (VideoDecData *)decCtrl->videoDecoderData; *width = video->width; *height = video->height; } /* ======================================================================== */ /* Function : PVGetVideoTimeStamp() */ /* Date : 04/27/2000, 08/29/2000 */ Loading