問題タブ [video-toolbox]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - CMSampleBuffer の CMBlockBuffer 所有権
ネイティブの Annex-B H.264 ストリームを解凍するコードを書いています。ストリームを解析し、SPS/PPS NALU から CMVideoFormatDescription を作成し、ストリームから抽出した他の NALU をラップするプロセスを実行しています。 CMSampleBuffers で。
デコーダーの CMBlockBuffer と CMSampleBuffer メモリを処理する方法について、精神的なブロックに苦しんでいます。私の問題は、何よりもCFがメモリを処理する方法を完全に理解していないことにあると思うので、私の質問はそれに関するものですが、コンテキストが役立つことを願っています.
次のように CMBlockBuffer を作成すると:
次のように CMSampleBuffer に追加します。
ブロックバッファをどのように処理すればよいですか? SampleBuffer はブロック バッファのメモリを保持していますか、それとも割り当てが解除されていないことを確認するために何かをする必要がありますか?
また、非同期デコード プロセスに関連して、デコーダが CMSampleBuffer をいつ処理するかを知る賢明な方法はありますか?
私の直感では、CMSampleBuffer は CMBlockBuffer を保持し、VTDecodeSession はデコードが完了するまで CMSampleBuffer を保持しますが、これは文書化されていない領域であり、私がさまよっているので、方向性を探しています。私が得ている結果は、私の直感が間違っている可能性があることを暗示しているので、正気を保つために問題としてメモリ管理を除外する必要があります...
objective-c - CGDisplayStream を使用した H.264 圧縮セッションのエンコード
画面からのデータを使用して H.264 圧縮セッションを作成しようとしています。CGDisplayStreamRef
次のようにインスタンスを作成しました。
以下は、現在のエンコード機能のセットアップ方法です。
CMSampleBufferRef
エンコード関数を適切に呼び出すことができるように、データを画面から に変換する方法を理解しようとしています。これまでのところ、これが可能かどうか、または私がやろうとしていることに対する正しいアプローチかどうかを判断できませんでした. 誰か提案はありますか?
編集: にIOSurface
変換しCMBlockBuffer
ましたが、それを に変換する方法がまだわかりませんCMSampleBufferRef
:
編集2
いくつかの進捗状況: