簡體   English   中英

Android Kitkat 4.4.2:自適應播放對SurfaceFlinger的影響

[英]Android Kitkat 4.4.2: Adaptive Playback impact on SurfaceFlinger

我在Android Kitkat的SO中遇到了有關自適應播放的通用問題 但是,我有一些特定的查詢,如下所示:

我能夠理解對codec和相關框架的影響。 但是,有一點我無法完全理解。

在自適應播放的情況下,編解碼器會在其輸出端口上使用metadata ,該metadata基本上會抽象並打包基礎緩沖區句柄(很可能是gralloc句柄)。 如果分辨率發生變化,我認為codec將直接更新gralloc句柄屬性,並將緩沖區發送回OMX客戶端,而無需更改端口設置。

我的第一個問題是:我的理解和假設正確嗎?

如果是這樣, Surfaceflinger / SurfaceTexture如何知道傳入的有效載荷是metadata格式,以及它如何從底層gralloc實現中檢索widthheight

您能否指出我相關的資源,以幫助我更好地理解這個問題?

提前謝謝了。

sendFormatChange => kWhatOutputFormatChange => MEDIA_SET_VIDEO_SIZE => ... =>本機窗口集_緩沖區大小

只是澄清一下,讓我們使用QC示例,組件識別作物變化-在此處查找OMX_IndexConfigCommonOutputCrop omx_vdec ,然后ACodec清除mSentFormat這使ACodec調用sendFormatChange ,后者將kWhatOutputFormatChange事件發送到NuPlayer,后者將MEDIA_SET_VIDEO_SIZE發送到媒體播放器。 在搖桿的第二側,您將獲得native_window_set_buffers_geometry ,該值強制Surface::setBuffersDimensions

當使用OMX_IndexConfigCommonOutputCrop接收到的集合mOutputPortSettingsHaveChanged ,最接近的OMXCodec::read調用將返回INFO_FORMAT_CHANGED這在AwesomePlayer中將使notifyVideoSize_l被調用,並且該消息將發送到偵聽器MEDIA_SET_VIDEO_SIZE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM