Loading include/media/stagefright/foundation/AMessage.h +3 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,9 @@ struct AMessage : public RefBase { bool findBuffer(const char *name, sp<ABuffer> *buffer) const; bool findMessage(const char *name, sp<AMessage> *obj) const; // finds any numeric type cast to a float bool findAsFloat(const char *name, float *value) const; bool findRect( const char *name, int32_t *left, int32_t *top, int32_t *right, int32_t *bottom) const; Loading media/libstagefright/ACodec.cpp +15 −11 Original line number Diff line number Diff line Loading @@ -3969,7 +3969,7 @@ status_t ACodec::setCyclicIntraMacroblockRefresh(const sp<AMessage> &msg, int32_ } static OMX_U32 setPFramesSpacing( int32_t iFramesInterval /* seconds */, int32_t frameRate, uint32_t BFramesSpacing = 0) { float iFramesInterval /* seconds */, int32_t frameRate, uint32_t BFramesSpacing = 0) { // BFramesSpacing is the number of B frames between I/P frames // PFramesSpacing (the value to be returned) is the number of P frames between I frames // Loading Loading @@ -4005,9 +4005,10 @@ static OMX_VIDEO_CONTROLRATETYPE getBitrateMode(const sp<AMessage> &msg) { } status_t ACodec::setupMPEG4EncoderParameters(const sp<AMessage> &msg) { int32_t bitrate, iFrameInterval; int32_t bitrate; float iFrameInterval; if (!msg->findInt32("bitrate", &bitrate) || !msg->findInt32("i-frame-interval", &iFrameInterval)) { || !msg->findAsFloat("i-frame-interval", &iFrameInterval)) { return INVALID_OPERATION; } Loading Loading @@ -4086,9 +4087,10 @@ status_t ACodec::setupMPEG4EncoderParameters(const sp<AMessage> &msg) { } status_t ACodec::setupH263EncoderParameters(const sp<AMessage> &msg) { int32_t bitrate, iFrameInterval; int32_t bitrate; float iFrameInterval; if (!msg->findInt32("bitrate", &bitrate) || !msg->findInt32("i-frame-interval", &iFrameInterval)) { || !msg->findAsFloat("i-frame-interval", &iFrameInterval)) { return INVALID_OPERATION; } Loading Loading @@ -4214,9 +4216,10 @@ int /* OMX_VIDEO_AVCLEVELTYPE */ ACodec::getAVCLevelFor( } status_t ACodec::setupAVCEncoderParameters(const sp<AMessage> &msg) { int32_t bitrate, iFrameInterval; int32_t bitrate; float iFrameInterval; if (!msg->findInt32("bitrate", &bitrate) || !msg->findInt32("i-frame-interval", &iFrameInterval)) { || !msg->findAsFloat("i-frame-interval", &iFrameInterval)) { return INVALID_OPERATION; } Loading Loading @@ -4373,9 +4376,10 @@ status_t ACodec::setupAVCEncoderParameters(const sp<AMessage> &msg) { } status_t ACodec::setupHEVCEncoderParameters(const sp<AMessage> &msg) { int32_t bitrate, iFrameInterval; int32_t bitrate; float iFrameInterval; if (!msg->findInt32("bitrate", &bitrate) || !msg->findInt32("i-frame-interval", &iFrameInterval)) { || !msg->findAsFloat("i-frame-interval", &iFrameInterval)) { return INVALID_OPERATION; } Loading Loading @@ -4430,7 +4434,7 @@ status_t ACodec::setupHEVCEncoderParameters(const sp<AMessage> &msg) { status_t ACodec::setupVPXEncoderParameters(const sp<AMessage> &msg) { int32_t bitrate; int32_t iFrameInterval = 0; float iFrameInterval = 0; size_t tsLayers = 0; OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE pattern = OMX_VIDEO_VPXTemporalLayerPatternNone; Loading @@ -4444,7 +4448,7 @@ status_t ACodec::setupVPXEncoderParameters(const sp<AMessage> &msg) { if (!msg->findInt32("bitrate", &bitrate)) { return INVALID_OPERATION; } msg->findInt32("i-frame-interval", &iFrameInterval); msg->findAsFloat("i-frame-interval", &iFrameInterval); OMX_VIDEO_CONTROLRATETYPE bitrateMode = getBitrateMode(msg); Loading media/libstagefright/foundation/AMessage.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,33 @@ const AMessage::Item *AMessage::findItem( return NULL; } bool AMessage::findAsFloat(const char *name, float *value) const { size_t i = findItemIndex(name, strlen(name)); if (i < mNumItems) { const Item *item = &mItems[i]; switch (item->mType) { case kTypeFloat: *value = item->u.floatValue; return true; case kTypeDouble: *value = (float)item->u.doubleValue; return true; case kTypeInt64: *value = (float)item->u.int64Value; return true; case kTypeInt32: *value = (float)item->u.int32Value; return true; case kTypeSize: *value = (float)item->u.sizeValue; return true; default: return false; } } return false; } bool AMessage::contains(const char *name) const { size_t i = findItemIndex(name, strlen(name)); return i < mNumItems; Loading Loading
include/media/stagefright/foundation/AMessage.h +3 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,9 @@ struct AMessage : public RefBase { bool findBuffer(const char *name, sp<ABuffer> *buffer) const; bool findMessage(const char *name, sp<AMessage> *obj) const; // finds any numeric type cast to a float bool findAsFloat(const char *name, float *value) const; bool findRect( const char *name, int32_t *left, int32_t *top, int32_t *right, int32_t *bottom) const; Loading
media/libstagefright/ACodec.cpp +15 −11 Original line number Diff line number Diff line Loading @@ -3969,7 +3969,7 @@ status_t ACodec::setCyclicIntraMacroblockRefresh(const sp<AMessage> &msg, int32_ } static OMX_U32 setPFramesSpacing( int32_t iFramesInterval /* seconds */, int32_t frameRate, uint32_t BFramesSpacing = 0) { float iFramesInterval /* seconds */, int32_t frameRate, uint32_t BFramesSpacing = 0) { // BFramesSpacing is the number of B frames between I/P frames // PFramesSpacing (the value to be returned) is the number of P frames between I frames // Loading Loading @@ -4005,9 +4005,10 @@ static OMX_VIDEO_CONTROLRATETYPE getBitrateMode(const sp<AMessage> &msg) { } status_t ACodec::setupMPEG4EncoderParameters(const sp<AMessage> &msg) { int32_t bitrate, iFrameInterval; int32_t bitrate; float iFrameInterval; if (!msg->findInt32("bitrate", &bitrate) || !msg->findInt32("i-frame-interval", &iFrameInterval)) { || !msg->findAsFloat("i-frame-interval", &iFrameInterval)) { return INVALID_OPERATION; } Loading Loading @@ -4086,9 +4087,10 @@ status_t ACodec::setupMPEG4EncoderParameters(const sp<AMessage> &msg) { } status_t ACodec::setupH263EncoderParameters(const sp<AMessage> &msg) { int32_t bitrate, iFrameInterval; int32_t bitrate; float iFrameInterval; if (!msg->findInt32("bitrate", &bitrate) || !msg->findInt32("i-frame-interval", &iFrameInterval)) { || !msg->findAsFloat("i-frame-interval", &iFrameInterval)) { return INVALID_OPERATION; } Loading Loading @@ -4214,9 +4216,10 @@ int /* OMX_VIDEO_AVCLEVELTYPE */ ACodec::getAVCLevelFor( } status_t ACodec::setupAVCEncoderParameters(const sp<AMessage> &msg) { int32_t bitrate, iFrameInterval; int32_t bitrate; float iFrameInterval; if (!msg->findInt32("bitrate", &bitrate) || !msg->findInt32("i-frame-interval", &iFrameInterval)) { || !msg->findAsFloat("i-frame-interval", &iFrameInterval)) { return INVALID_OPERATION; } Loading Loading @@ -4373,9 +4376,10 @@ status_t ACodec::setupAVCEncoderParameters(const sp<AMessage> &msg) { } status_t ACodec::setupHEVCEncoderParameters(const sp<AMessage> &msg) { int32_t bitrate, iFrameInterval; int32_t bitrate; float iFrameInterval; if (!msg->findInt32("bitrate", &bitrate) || !msg->findInt32("i-frame-interval", &iFrameInterval)) { || !msg->findAsFloat("i-frame-interval", &iFrameInterval)) { return INVALID_OPERATION; } Loading Loading @@ -4430,7 +4434,7 @@ status_t ACodec::setupHEVCEncoderParameters(const sp<AMessage> &msg) { status_t ACodec::setupVPXEncoderParameters(const sp<AMessage> &msg) { int32_t bitrate; int32_t iFrameInterval = 0; float iFrameInterval = 0; size_t tsLayers = 0; OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE pattern = OMX_VIDEO_VPXTemporalLayerPatternNone; Loading @@ -4444,7 +4448,7 @@ status_t ACodec::setupVPXEncoderParameters(const sp<AMessage> &msg) { if (!msg->findInt32("bitrate", &bitrate)) { return INVALID_OPERATION; } msg->findInt32("i-frame-interval", &iFrameInterval); msg->findAsFloat("i-frame-interval", &iFrameInterval); OMX_VIDEO_CONTROLRATETYPE bitrateMode = getBitrateMode(msg); Loading
media/libstagefright/foundation/AMessage.cpp +27 −0 Original line number Diff line number Diff line Loading @@ -212,6 +212,33 @@ const AMessage::Item *AMessage::findItem( return NULL; } bool AMessage::findAsFloat(const char *name, float *value) const { size_t i = findItemIndex(name, strlen(name)); if (i < mNumItems) { const Item *item = &mItems[i]; switch (item->mType) { case kTypeFloat: *value = item->u.floatValue; return true; case kTypeDouble: *value = (float)item->u.doubleValue; return true; case kTypeInt64: *value = (float)item->u.int64Value; return true; case kTypeInt32: *value = (float)item->u.int32Value; return true; case kTypeSize: *value = (float)item->u.sizeValue; return true; default: return false; } } return false; } bool AMessage::contains(const char *name) const { size_t i = findItemIndex(name, strlen(name)); return i < mNumItems; Loading