macOS 版がビルドは成功するが動作させようとするとセグメンテーションフォルトする問題の修正 #90
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#89 で未解決となっている問題の1つを修正する PR です。
MacCapturer を利用する場合、
frame.video_frame_buffer()->type() == webrtc::VideoFrameBuffer::Type::kNative
を返しますが、内部では NativeBuffer を使っていないので、
dynamic_cast
が失敗し、nullptr
を返します。これによってSegmentation fault: 11
(EXC_BAD_ACCESS (code=1, address=0x10) 要するに NullPointer 例外) が発生しています。V4L2VideoCapture を使う場合でも、captureVideoType が
webrtc::VideoType::kMJPEG か webrtc::VideoType::kI420 ではないケースで
同様の問題が発生する可能性があるため、ScalableTrackSource#useNativeBuffer() を
追加して、dynamic_cast 前に条件チェックをするようにしました。
単純に、
dynamic_cast
の戻り値がnullptr
であるかをチェックするでも動くのですが、こちらの方がコード的に意味が通るかと思い、そうしました。ARC 対応はおまけです。
残念ながら、この PR では #77 は修正できていません。