mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
move error message for undecrytped video into video_renderers_gstreamer.c
This commit is contained in:
@@ -78,7 +78,6 @@ struct raop_rtp_mirror_s {
|
||||
|
||||
unsigned short mirror_data_lport;
|
||||
|
||||
bool broken_video;
|
||||
};
|
||||
|
||||
static int
|
||||
@@ -337,7 +336,6 @@ raop_rtp_mirror_thread(void *arg)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (nalu_size != payload_size) valid = false;
|
||||
|
||||
// int nalu_type = payload[4] & 0x1f;
|
||||
// logger_log(raop_rtp_mirror->logger, LOGGER_DEBUG, "nalutype = %d", nalu_type);
|
||||
@@ -347,20 +345,15 @@ raop_rtp_mirror_thread(void *arg)
|
||||
#ifdef DUMP_H264
|
||||
fwrite(payload_decrypted, payload_size, 1, file);
|
||||
#endif
|
||||
if (valid) {
|
||||
raop_rtp_mirror->broken_video = false;
|
||||
h264_decode_struct h264_data;
|
||||
h264_data.data_len = payload_size;
|
||||
h264_data.data = payload_decrypted;
|
||||
h264_data.frame_type = 1;
|
||||
h264_data.pts = ntp_timestamp;
|
||||
raop_rtp_mirror->callbacks.video_process(raop_rtp_mirror->callbacks.cls, raop_rtp_mirror->ntp, &h264_data);
|
||||
} else {
|
||||
if (!raop_rtp_mirror->broken_video) {
|
||||
logger_log(raop_rtp_mirror->logger, LOGGER_ERR, "*** ERROR decryption of video failed");
|
||||
}
|
||||
raop_rtp_mirror->broken_video = true;
|
||||
}
|
||||
if (!valid || nalu_size != payload_size) payload_decrypted[0] = 1; /* mark as invalid */
|
||||
|
||||
h264_decode_struct h264_data;
|
||||
h264_data.data_len = payload_size;
|
||||
h264_data.data = payload_decrypted;
|
||||
h264_data.frame_type = 1;
|
||||
h264_data.pts = ntp_timestamp;
|
||||
raop_rtp_mirror->callbacks.video_process(raop_rtp_mirror->callbacks.cls, raop_rtp_mirror->ntp, &h264_data);
|
||||
|
||||
free(payload_decrypted);
|
||||
} else if ((payload_type & 255) == 1) {
|
||||
// The information in the payload contains an SPS and a PPS NAL
|
||||
@@ -482,7 +475,6 @@ raop_rtp_start_mirror(raop_rtp_mirror_t *raop_rtp_mirror, int use_udp, unsigned
|
||||
/* Create the thread and initialize running values */
|
||||
raop_rtp_mirror->running = 1;
|
||||
raop_rtp_mirror->joined = 0;
|
||||
raop_rtp_mirror->broken_video = false;
|
||||
|
||||
THREAD_CREATE(raop_rtp_mirror->thread_mirror, raop_rtp_mirror_thread, raop_rtp_mirror);
|
||||
MUTEX_UNLOCK(raop_rtp_mirror->run_mutex);
|
||||
|
||||
@@ -209,7 +209,7 @@ void audio_renderer_render_buffer(raop_ntp_t *ntp, unsigned char* data, int data
|
||||
if (counter == 2) broken_audio = false;
|
||||
if (!broken_audio) gst_app_src_push_buffer(GST_APP_SRC(renderer->appsrc), buffer);
|
||||
} else {
|
||||
if(!broken_audio) logger_log(logger, LOGGER_ERR, "*** ERROR decryption of audio (compression_type %d) failed ", renderer->ct);
|
||||
if (!broken_audio) logger_log(logger, LOGGER_ERR, "*** ERROR decryption of audio (compression_type %d) failed ", renderer->ct);
|
||||
broken_audio = true;
|
||||
counter = 0;
|
||||
}
|
||||
|
||||
@@ -94,6 +94,7 @@ static void append_videoflip (GString *launch, const videoflip_t *flip, const vi
|
||||
|
||||
static video_renderer_t *renderer = NULL;
|
||||
static logger_t *logger = NULL;
|
||||
static bool broken_video;
|
||||
|
||||
void video_renderer_init(logger_t *render_logger, const char *server_name, videoflip_t videoflip[2], const char *videosink) {
|
||||
GError *error = NULL;
|
||||
@@ -143,28 +144,33 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, vide
|
||||
}
|
||||
|
||||
void video_renderer_start() {
|
||||
broken_video = false;
|
||||
gst_element_set_state (renderer->pipeline, GST_STATE_PLAYING);
|
||||
renderer->bus = gst_element_get_bus(renderer->pipeline);
|
||||
}
|
||||
|
||||
void video_renderer_render_buffer(raop_ntp_t *ntp, unsigned char* data, int data_len, uint64_t pts, int type) {
|
||||
GstBuffer *buffer;
|
||||
|
||||
assert(data_len != 0);
|
||||
|
||||
buffer = gst_buffer_new_and_alloc(data_len);
|
||||
assert(buffer != NULL);
|
||||
GST_BUFFER_DTS(buffer) = (GstClockTime)pts;
|
||||
gst_buffer_fill(buffer, 0, data, data_len);
|
||||
gst_app_src_push_buffer (GST_APP_SRC(renderer->appsrc), buffer);
|
||||
|
||||
/* first four bytes of valid video data are 0x0, 0x0, 0x0, 0x1 */
|
||||
/* first byte of invalid data (decryption failed) is 0x1 */
|
||||
if (data[0]) {
|
||||
if (!broken_video) logger_log(logger, LOGGER_ERR, "*** ERROR decryption of video failed ");
|
||||
broken_video = true;
|
||||
} else {
|
||||
broken_video = false;
|
||||
buffer = gst_buffer_new_and_alloc(data_len);
|
||||
assert(buffer != NULL);
|
||||
GST_BUFFER_DTS(buffer) = (GstClockTime)pts;
|
||||
gst_buffer_fill(buffer, 0, data, data_len);
|
||||
gst_app_src_push_buffer (GST_APP_SRC(renderer->appsrc), buffer);
|
||||
#ifdef X_DISPLAY_FIX
|
||||
if(renderer->gst_window && !(renderer->gst_window->window)) {
|
||||
fix_x_window_name(renderer->gst_window, renderer->server_name);
|
||||
}
|
||||
if (renderer->gst_window && !(renderer->gst_window->window)) {
|
||||
fix_x_window_name(renderer->gst_window, renderer->server_name);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void video_renderer_flush(video_renderer_t *renderer) {
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user