Родной клиент Chrome, media_track_video должен использоваться основным потоком? - PullRequest
0 голосов
/ 19 ноября 2018

Я изменяю демонстрационный код media_stream_video.cc, устанавливаю ConfigureTrack в один поток, с помощью кода ниже:

m_p_worker_thread.message_loop().PostWork(callback_factory_.NewCallback(&MediaStreamVideoDemoInstance::ConfigureTrack));

, а из JavaScript я изменяю пример видео на share-sample, с помощью кода ниже:

chrome.desktopCapture.chooseDesktopMedia(["screen", "window"], onAccessApproved);

function onAccessApproved(){
    navigator.webkitGetUserMedia({
        audio: false,
        video: {
            mandatory: {
                chromeMediaSource: 'desktop',
                chromeMediaSourceId: desktop_id,
                maxWidth: 1920,
                maxHeight: 1200,
                maxFrameRate: 5
            }
        }
    }, success, console.log); 
}

Я повторяю остановку обмена и запуск обмена.произойдет сбой, ниже приведена трассировка:

#0  0x000000000fe509c2 in ?? ()
#1  0x000000000fd55f20 in ?? ()
#2  0x0000000000056d40 in pp::VideoFrame::GetFormat (this=0xfed7fa68) at video_frame.cc:49
#3  0x0000000000026240 in (anonymous namespace)::MediaStreamVideoDemoInstance::OnGetFrame (this=0xfeec0520, result=0,
    frame=...) at media_stream_video.cc:621
#4  0x0000000000026b20 in pp::CompletionCallbackFactory<(anonymous namespace)::MediaStreamVideoDemoInstance, pp::ThreadSafeThreadTraits>::DispatcherWithOutput0<pp::VideoFrame, void ((anonymous namespace)::MediaStreamVideoDemoInstance::*)(int, pp::VideoFrame)>::operator() (this=0xfeec1298, object=0xfeec0520, result=0)
    at D:/Project/nacl_sdk/pepper_49/include\ppapi/utility/completion_callback_factory.h:633
#5  0x0000000000026920 in pp::CompletionCallbackFactory<(anonymous namespace)::MediaStreamVideoDemoInstance, pp::ThreadSafeThreadTraits>::CallbackData<pp::CompletionCallbackFactory<(anonymous namespace)::MediaStreamVideoDemoInstance, pp::ThreadSafeThreadTraits>::DispatcherWithOutput0<pp::VideoFrame, void ((anonymous namespace)::MediaStreamVideoDemoInstance::*)(int, pp::VideoFrame)> >::Thunk (user_data=0xfeec12a8, result=0)
    at D:/Project/nacl_sdk/pepper_49/include\ppapi/utility/completion_callback_factory.h:584
#6  0x000000000fea6840 in ?? ()
#7  0x000000000fe0d420 in ?? ()
#8  0x000000000fe0d5a0 in ?? ()
#9  0x000000000fe0d4e0 in ?? ()
#10 0x000000000fdd8100 in ?? ()
#11 0x000000000fdb7560 in ?? ()
#12 0x000000000fdb79e0 in ?? ()
#13 0x000000000fdb7ca0 in ?? ()
#14 0x000000000fdb9ca0 in ?? ()
#15 0x000000000fdcb880 in ?? ()
#16 0x000000000fea2120 in ?? ()
#17 0x000000000fe153e0 in ?? ()
#18 0x000000000fe162c0 in ?? ()
#19 0x0000000000041980 in pp::MessageLoop::Run (this=0xfeec06f0) at message_loop.cc:67
#20 0x0000000000050740 in pp::(anonymous namespace)::RunThread (void_data=0xfeec06f0) at simple_thread.cc:41
---Type <return> to continue, or q <return> to quit---
#21 0x0000000000062d80 in nc_thread_starter () at src/untrusted/pthread/nc_thread.c:101
#22 0x000000000fdf9560 in ?? ()
#23 0x0000000000000000 in ?? ()

Тестовая книга: Процессор Lenovo: ЦП процессора InterleR® R N3350 @ 1,10 ГГц Архитектура: x86_64 Количество процессоров: 2

Iпроверить другую книгу, не иметь этот вопрос.Я думаю, что это вопрос блокировки конкуренции.но я не уверенКто-нибудь может мне помочь?

...