Keep live decoding low latency and preserve publisher stop controls
This commit is contained in:
1 parent
b4ebaa8863
commit
7addfb5aa3
3 files changed
+4
-1
No files matched your search
@@ -82,6 +82,8 @@ fun StreamScreen(channelId: String, channelName: String, sources: List<StreamSou
|
||||
key(group, selected.id, selected.epoch) { LiveStreamView(group, selected.id, selected.epoch, selected.self) }
|
||||
}
|
||||
TextButton(onClick = { onSelect(null); onBack() }) { Text(stringResource(R.string.stream_close_view)) }
|
||||
if (selected.self && local?.ongoing == true) Button(onClick = StreamController::stop,
|
||||
enabled = local.phase != StreamPhase.STOPPING) { Text(stringResource(R.string.stream_stop)) }
|
||||
return@Column
|
||||
}
|
||||
if (local?.ongoing == true) {
|
||||
|
||||
@@ -437,7 +437,7 @@ target_link_libraries(test_radio_member_mute PRIVATE ${QT_CORE} utun_voice utun
|
||||
add_test(NAME test_radio_member_mute COMMAND test_radio_member_mute)
|
||||
set(RADIO_MEMBER_TEST_SOURCES src/memberlistmodel.cpp src/avatars/avatarcache.cpp src/avatars/avatarmanager.cpp
|
||||
src/avatars/avatarcrop.cpp src/avatars/avatargallery.cpp src/imageviewer_window.cpp db/db_manager.cpp)
|
||||
add_executable(test_radio_mute_bridge tests/test_radio_mute_bridge.cpp transport/utun_node.cpp transport/gui_bridge_impl.cpp
|
||||
add_executable(test_radio_mute_bridge tests/test_radio_mute_bridge.cpp transport/utun_node.cpp transport/gui_bridge_impl.cpp transport/stream_bridge.cpp
|
||||
src/accountdelegate.cpp src/flagpainter.cpp ${RADIO_MEMBER_TEST_SOURCES})
|
||||
target_include_directories(test_radio_mute_bridge PRIVATE ${UTUN_INCLUDE_DIRS})
|
||||
target_link_libraries(test_radio_mute_bridge PRIVATE ${QT_LIBS} ${QT_TEST_LIB} utun_voice utun pthread)
|
||||
|
||||
@@ -243,6 +243,7 @@ void StreamPlayerWindow::decode() {
|
||||
if (!decoder) {
|
||||
const AVCodec* codec = avcodec_find_decoder(AV_CODEC_ID_H264);
|
||||
decoder = codec ? avcodec_alloc_context3(codec) : nullptr;
|
||||
if (decoder) { decoder->thread_count = 1; decoder->flags |= AV_CODEC_FLAG_LOW_DELAY; }
|
||||
if (!decoder || avcodec_open2(decoder, codec, nullptr) < 0) { fail(text("Stream video decoder failed")); break; }
|
||||
decoder->pkt_timebase = AVRational{1, 1000000};
|
||||
waitKey = false;
|
||||
|
||||
Reference in new issue
Block a user