![](/img/trans.png)
[英]Developing H264 hardware decoder Android - Stagefright or OpenMax IL?
[英]H264 HW accelerated decoding in Android using stagefright library
我正在嘗試使用帶有Stagefright庫的硬件對h264視頻進行解碼。
我在這里用了一個例子。 我在MedaBuffer
獲取解碼數據。 用於渲染MediaBuffer->data()
我試圖AwesomeLocalRenderer
在AwesomePlayer.cpp。
但是屏幕上的圖像失真
這是原始圖片和崩潰圖片的鏈接 。
並在示例中也嘗試過`
sp<MetaData> metaData = mVideoBuffer->meta_data();
int64_t timeUs = 0;
metaData->findInt64(kKeyTime, &timeUs);
native_window_set_buffers_timestamp(mNativeWindow.get(), timeUs * 1000);
err = mNativeWindow->queueBuffer(mNativeWindow.get(),
mVideoBuffer->graphicBuffer().get(), -1);`
但是我的本機代碼崩潰了。 我無法獲得真實的照片或它損壞或黑屏。
提前致謝。
如果您使用的是HW
加速解碼器,則組件輸出端口上的分配將基於本Native Window
。 換句話說,輸出緩沖區基本上是由Stagefright
框架傳遞的gralloc
句柄。 (參考: OMXCodec::allocateOutputBuffersFromNativeWindow
)。 因此, MediaBuffer
將返回的MediaBuffer
解釋為普通的YUV
緩沖區。
如果是AwesomeLocalRenderer
,則在調用mTarget->render
時,框架將執行軟件顏色轉換,如下所示。 如果跟蹤代碼流,您會發現MediaBuffer
內容直接解釋為YUV
緩沖區。
對於HW
加速編解碼器,您應該使用AwesomeNativeWindowRenderer
。 如果您有使用AwesomeLocalRenderer
特殊條件,請突出顯示相同的內容。 我可以適當地優化此響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.