瀏覽代碼

obs-ffmpeg: Implement priority for HEVC over HLS

jpark37 3 年之前
父節點
當前提交
2a1b047d33
共有 2 個文件被更改,包括 18 次插入4 次删除
  1. 18 3
      plugins/obs-ffmpeg/obs-ffmpeg-hls-mux.c
  2. 0 1
      plugins/obs-ffmpeg/obs-ffmpeg-mux.h

+ 18 - 3
plugins/obs-ffmpeg/obs-ffmpeg-hls-mux.c

@@ -1,4 +1,8 @@
 #include "obs-ffmpeg-mux.h"
+#include <obs-avc.h>
+#ifdef ENABLE_HEVC
+#include <obs-hevc.h>
+#endif
 
 #define do_log(level, format, ...)                      \
 	blog(level, "[ffmpeg hls muxer: '%s'] " format, \
@@ -292,9 +296,20 @@ void ffmpeg_hls_mux_data(void *data, struct encoder_packet *packet)
 	}
 
 	if (packet->type == OBS_ENCODER_VIDEO) {
-		obs_parse_avc_packet(&tmp_packet, packet);
-		packet->drop_priority = tmp_packet.priority;
-		obs_encoder_packet_release(&tmp_packet);
+		const char *const codec =
+			obs_encoder_get_codec(packet->encoder);
+		if (strcmp(codec, "h264") == 0) {
+			obs_parse_avc_packet(&tmp_packet, packet);
+			packet->drop_priority = tmp_packet.priority;
+			obs_encoder_packet_release(&tmp_packet);
+		}
+#ifdef ENABLE_HEVC
+		else if (strcmp(codec, "hevc") == 0) {
+			obs_parse_hevc_packet(&tmp_packet, packet);
+			packet->drop_priority = tmp_packet.priority;
+			obs_encoder_packet_release(&tmp_packet);
+		}
+#endif
 	}
 	obs_encoder_packet_ref(&new_packet, packet);
 

+ 0 - 1
plugins/obs-ffmpeg/obs-ffmpeg-mux.h

@@ -1,6 +1,5 @@
 #pragma once
 
-#include <obs-avc.h>
 #include <obs-module.h>
 #include <obs-hotkey.h>
 #include <util/circlebuf.h>