android multimedia框架总结(二十二)mediacodec中c++中创建到start过程及状态变换

上传人:第*** 文档编号:31309941 上传时间:2018-02-06 格式:DOC 页数:15 大小:105KB
返回 下载 相关 举报
android multimedia框架总结(二十二)mediacodec中c++中创建到start过程及状态变换_第1页
第1页 / 共15页
android multimedia框架总结(二十二)mediacodec中c++中创建到start过程及状态变换_第2页
第2页 / 共15页
android multimedia框架总结(二十二)mediacodec中c++中创建到start过程及状态变换_第3页
第3页 / 共15页
android multimedia框架总结(二十二)mediacodec中c++中创建到start过程及状态变换_第4页
第4页 / 共15页
android multimedia框架总结(二十二)mediacodec中c++中创建到start过程及状态变换_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《android multimedia框架总结(二十二)mediacodec中c++中创建到start过程及状态变换》由会员分享,可在线阅读,更多相关《android multimedia框架总结(二十二)mediacodec中c++中创建到start过程及状态变换(15页珍藏版)》请在金锄头文库上搜索。

1、Android Multimedia 框架总结(二十二)MediaCodec 中 C+中创建到 start 过程及状态变换从今天开始,将深入源码中看看其 c+过程,看下 Agenda 如下:mediacodec.hCreateByTypeinitMediaCodec 中 BufferInfo 内部类:configure 过程startBufferInfo 在 MediaCodec.h 中对应是一个结构体/create by 逆流的鱼 yuiop on 2016/12/11/blog 地址:http:/ BufferInfo uint32_t mBufferID;sp mData;sp mEnc

2、ryptedData;sp mSharedEncryptedBuffer;sp mNotify;sp mFormat;bool mOwnedByClient;mediacodec.h 的方法的声明,位于frameworksavincludemediastagefright 下/create by 逆流的鱼 yuiop on 2016/12/11/blog 地址:http:/ android struct ABuffer;struct AMessage;struct AReplyToken;struct AString;struct CodecBase;struct IBatteryStats;

3、struct ICrypto;class IMemory;struct MemoryDealer;class IResourceManagerClient;class IResourceManagerService;struct PersistentSurface;struct SoftwareRenderer;struct Surface;struct MediaCodec : public AHandler enum ConfigureFlags CONFIGURE_FLAG_ENCODE = 1,;enum BufferFlags BUFFER_FLAG_SYNCFRAME = 1,BU

4、FFER_FLAG_CODECCONFIG = 2,BUFFER_FLAG_EOS = 4,;enum CB_INPUT_AVAILABLE = 1,CB_OUTPUT_AVAILABLE = 2,CB_ERROR = 3,CB_OUTPUT_FORMAT_CHANGED = 4,CB_RESOURCE_RECLAIMED = 5,;static const pid_t kNoPid = -1;static sp CreateByType(const sp &looper, const char *mime, bool encoder, status_t *err = NULL,pid_t p

5、id = kNoPid);static sp CreateByComponentName(const sp &looper, const char *name, status_t *err = NULL,pid_t pid = kNoPid);static sp CreatePersistentInputSurface();status_t configure(const sp &format,const sp &nativeWindow,const sp &crypto,uint32_t flags);status_t setCallback(const sp status_t setOnF

6、rameRenderedNotification(const sp status_t createInputSurface(sp* bufferProducer);status_t setInputSurface(const sp status_t start();/ Returns to a state in which the component remains allocated but/ unconfigured.status_t stop();/ Resets the codec to the INITIALIZED state. Can be called after an err

7、or/ has occured to make the codec usable.status_t reset();/ Client MUST call release before releasing final reference to this/ object. status_t release();status_t flush();status_t queueInputBuffer(size_t index,size_t offset,size_t size,int64_t presentationTimeUs,uint32_t flags,AString *errorDetailMs

8、g = NULL);status_t queueSecureInputBuffer(size_t index,size_t offset,const CryptoPlugin:SubSample *subSamples,size_t numSubSamples,const uint8_t key16,const uint8_t iv16,CryptoPlugin:Mode mode,int64_t presentationTimeUs,uint32_t flags,AString *errorDetailMsg = NULL);status_t dequeueInputBuffer(size_

9、t *index, int64_t timeoutUs = 0ll);status_t dequeueOutputBuffer(size_t *index,size_t *offset,size_t *size,int64_t *presentationTimeUs,uint32_t *flags,int64_t timeoutUs = 0ll);status_t renderOutputBufferAndRelease(size_t index, int64_t timestampNs);status_t renderOutputBufferAndRelease(size_t index);

10、status_t releaseOutputBuffer(size_t index);status_t signalEndOfInputStream();status_t getOutputFormat(sp *format) const;status_t getInputFormat(sp *format) const;status_t getWidevineLegacyBuffers(Vector *buffers) const;status_t getInputBuffers(Vector *buffers) const;status_t getOutputBuffers(Vector

11、*buffers) const;status_t getOutputBuffer(size_t index, sp *buffer);status_t getOutputFormat(size_t index, sp *format);status_t getInputBuffer(size_t index, sp *buffer);status_t setSurface(const sp status_t requestIDRFrame();/ Notification will be posted once there is something to do, i.e./ an input/

12、output buffer has become available, a format change is / pending, an error is pending.void requestActivityNotification(const sp status_t getName(AString *componentName) const;status_t setParameters(const sp / Create a MediaCodec notification message from a list of rendered or dropped render infos/ b

13、y adding rendered frame information to a base notification message. Returns the number/ of frames that were rendered.static size_t CreateFramesRenderedMessage(std:list done, sp protected:virtual MediaCodec();virtual void onMessageReceived(const sp private:/ used by ResourceManagerClientstatus_t recl

14、aim(bool force = false);friend struct ResourceManagerClient;private:enum State UNINITIALIZED,INITIALIZING,INITIALIZED,CONFIGURING,CONFIGURED,STARTING,STARTED,FLUSHING,FLUSHED,STOPPING,RELEASING,;enum kPortIndexInput = 0,kPortIndexOutput = 1,;enum kWhatInit = init,kWhatConfigure = conf,kWhatSetSurfac

15、e = sSur,kWhatCreateInputSurface = cisf,kWhatSetInputSurface = sisf,kWhatStart = strt,kWhatStop = stop,kWhatRelease = rele,kWhatDequeueInputBuffer = deqI, kWhatQueueInputBuffer = queI,kWhatDequeueOutputBuffer = deqO,kWhatReleaseOutputBuffer = relO,kWhatSignalEndOfInputStream = eois,kWhatGetBuffers = getB,kWhatFlush = flu

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号