在iOS6中,我使用OpenGL在AVFoundation視頻幀上進行一些渲染。我見過很多使用CVPixelBufferLockBaseAddress和CVPixelBufferUnlockBaseAddress的示例代碼,但是我不清楚何時執行鎖定和解鎖或者我爲什麼要這麼做。我應該在CPU修改內存時鎖定地址嗎?還是應該在GPU讀取它時鎖定它?我應該何時解鎖?爲什麼我甚至想要解鎖?我見過this Stack Overflow answer,但它不能完全回答我的問題。什麼時候應該調用CVPixelBufferLockBaseAddress和CVPixelBufferUnlockBaseAddress?
1
A
回答
3
你應該鎖定每次你需要使用它,並解鎖完成後,你不再需要它。這可以防止緩衝區被覆蓋,從而使其處於不一致的狀態。
一位固件專家曾向我解釋過這一點:一般來說,在處理視頻輸出時,應該注意有很多間接引用指針,就像是說:「嘿,這是我的,我正在使用它,指向其他地方的下一幀「。
我無法根據您的應用程序判斷何時不再需要緩衝區,但這是您應該弄清楚的。如果您已將緩衝區數據複製到其他位置(例如創建新對象),則意味着您可以解鎖它。
希望這會有所幫助。
2
如果你想訪問CPU上的像素緩衝區,如果GPU不這麼做,你應該只調用這個函數!,Apple doc很清楚。
下面是來自蘋果官方的文檔的信息:
必須調用CVPixelBufferLockBaseAddress功能與CPU存取像素數據之前,後來叫CVPixelBufferUnlockBaseAddress功能。如果在鎖定緩衝區時在lockFlags參數中包含kCVPixelBufferLock_ReadOnly值,則在解鎖緩衝區時還必須包含該值。
重要
與GPU訪問像素數據時,鎖定是不必要的,並且會削弱性能。
相關問題
- 1. 什麼時候應該調用javax.jdo.Query.close(Object)?
- 2. 什麼時候應該調用realm.close()?
- 3. 什麼時候應該調用super.onResume()?
- 4. 什麼時候應該調用MessageQueue.EndReceive()?
- 5. 什麼時候應該調用Naming.unbind()?
- 6. 什麼時候應該調用setContentAspectRatio?
- 7. 什麼時候應該調用SharedPreferencesBackupHelper()/ BackupAgent?
- 8. 什麼時候應該調用Transaction.delistResource()?
- 9. 什麼時候應該用Nunjucks和Angular?
- 10. 什麼時候應該使用async/await,什麼時候不用?
- 11. 什麼時候應該使用AWS,什麼時候不使用
- 12. 什麼時候應該使用sed,什麼時候應該使用awk
- 13. 什麼時候應該使用memcpy,什麼時候應該使用memmove?
- 14. 什麼時候應該使用Import-Package,什麼時候應該使用Require-Bundle?
- 15. 什麼時候應該去Silverlight和XNA?
- 16. 什麼時候應該調用resetProxy和clearSelf方法的Actor?
- 17. 什麼時候應該調用rawurlencode和rawurldecode?
- 18. 什麼時候應該使用call()直接調用該函數?
- 19. 什麼時候應該使用學說ORM和什麼時候zend-db-table?
- 20. 什麼時候應該擴展NSDocument,什麼時候應該擴展NSWindowController?
- 21. 我們什麼時候應該上課,什麼時候不應該上課
- 22. C++元編程,爲什麼和什麼時候應該使用?
- 23. 爲什麼和什麼時候應該使用android日誌類?
- 24. 爲什麼和什麼時候應該使用innerHTML
- 25. 爲什麼和什麼時候應該使用hoops 3d圖形?
- 26. 什麼時候應該使用FSharpFunc.Adapt?
- 27. 什麼時候應該使用_aligned_malloc()?
- 28. 什麼時候應該使用`use`?
- 29. 什麼時候應該使用$ rootScope?
- 30. 什麼時候應該使用$(document).ready?
那看一個類似的問題,我的回答 http://stackoverflow.com/questions/6468535/cvpixelbufferlockbaseaddress-why-capture-still-image-using-avfoundation – Andrea 2013-03-21 21:17:50
我掛你的問題在我的。就像我說的,它並不完全回答我的問題。但也許你有一些洞察力。我應該什麼時候鎖?我應該何時解鎖?爲什麼我應該解鎖?鎖具防止什麼? – GingerBreadMane 2013-03-21 22:07:54