提交 85387372 authored 作者: Anthony Minessale's avatar Anthony Minessale 提交者: Michael Jerris

FS-7500: factor out the write_image callback and fix the vlc video endpoint to…

FS-7500: factor out the write_image callback and fix the vlc video endpoint to setup and match the audio params of the A leg when bridged
上级 01fda574
......@@ -188,12 +188,6 @@ struct switch_core_session {
switch_media_handle_t *media_handle;
uint32_t decoder_errors;
switch_core_video_thread_callback_func_t *_video_thread_callback;
void *_video_thread_user_data;
//switch_time_t last_video_write_time;
switch_image_write_callback_t image_write_callback;
void *image_write_callback_user_data;
switch_slin_data_t *sdata;
};
......
......@@ -1271,15 +1271,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(_In_ switch_core_
*/
SWITCH_DECLARE(switch_status_t) switch_core_session_read_video_frame(_In_ switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags,
int stream_id);
/*!
\brief set a callback to be called after each frame of an image is written
\param session the session to write to
\param callback the function to call
\param user_data the user data pointer to pass as an arguement to the callback
\return void
*/
SWITCH_DECLARE(void) switch_core_session_set_image_write_callback(switch_core_session_t *session, switch_image_write_callback_t callback, void *user_data);
/*!
\brief Write a video frame to a session
\param session the session to write to
......
......@@ -216,9 +216,9 @@ SWITCH_DECLARE(void) switch_img_flip(switch_image_t *img);
*
* Frees all allocated storage associated with an image descriptor.
*
* \param[in] img Image descriptor
* \param[in] img pointer to pointer of Image descriptor
*/
SWITCH_DECLARE(void) switch_img_free(switch_image_t *img);
SWITCH_DECLARE(void) switch_img_free(switch_image_t **img);
/** @} */
......
......@@ -738,7 +738,7 @@ static switch_status_t switch_h264_destroy(switch_codec_t *codec)
av_free(context->decoder_ctx);
}
if (context->img) switch_img_free(context->img);
switch_img_free(&context->img);
if (context->encoder_ctx) {
if (avcodec_is_open(context->encoder_ctx)) avcodec_close(context->encoder_ctx);
......
......@@ -667,7 +667,7 @@ SWITCH_STANDARD_APP(play_yuv_function)
close(fd);
}
switch_img_free(img);
switch_img_free(&img);
done:
......
......@@ -599,7 +599,7 @@ static switch_status_t switch_h264_destroy(switch_codec_t *codec)
}
if (context->decoder) {
if (context->img) switch_img_free(context->img);
switch_img_free(&context->img);
context->decoder->Uninitialize();
WelsDestroyDecoder(context->decoder);
}
......
......@@ -9538,12 +9538,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_codec_control(switch_core_sess
}
SWITCH_DECLARE(void) switch_core_session_set_image_write_callback(switch_core_session_t *session, switch_image_write_callback_t callback, void *user_data)
{
session->image_write_callback = callback;
session->image_write_callback_user_data = user_data;
}
static switch_status_t raw_write_video(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id)
{
switch_io_event_hook_video_write_frame_t *ptr;
......@@ -9665,14 +9659,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_video_frame(switch_cor
}
switch_set_flag(frame, SFF_RAW_RTP_PARSE_FRAME);
status = raw_write_video(session, frame, flags, stream_id);
if (status == SWITCH_STATUS_SUCCESS && session->image_write_callback) {
session->image_write_callback(session, frame, img, session->image_write_callback_user_data);
}
}
} while(status == SWITCH_STATUS_SUCCESS && encode_status == SWITCH_STATUS_MORE_DATA);
......
......@@ -2683,8 +2683,6 @@ SWITCH_DECLARE(void) switch_core_session_video_reset(switch_core_session_t *sess
switch_channel_clear_flag(session->channel, CF_VIDEO_DEBUG_READ);
switch_channel_clear_flag(session->channel, CF_VIDEO_DEBUG_WRITE);
switch_core_session_refresh_video(session);
session->image_write_callback = NULL;
session->image_write_callback_user_data = NULL;
}
SWITCH_DECLARE(switch_status_t) switch_core_session_execute_application_get_flags(switch_core_session_t *session, const char *app,
......
......@@ -64,9 +64,13 @@ SWITCH_DECLARE(void) switch_img_flip(switch_image_t *img)
vpx_img_flip((vpx_image_t *)img);
}
SWITCH_DECLARE(void) switch_img_free(switch_image_t *img)
SWITCH_DECLARE(void) switch_img_free(switch_image_t **img)
{
vpx_img_free((vpx_image_t *)img);
if (img && *img) {
vpx_img_free((vpx_image_t *)*img);
}
*img = NULL;
}
/* For Emacs:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论