Commit bd1d298a authored by Ghislain MARY's avatar Ghislain MARY
Browse files

Fix marker info when the VP8 packer puts a frame in multiple packets.

parent d15f8422
...@@ -543,6 +543,7 @@ static void packer_process_frame_part(void *p, void *c) { ...@@ -543,6 +543,7 @@ static void packer_process_frame_part(void *p, void *c) {
uint8_t pdsize = 1; uint8_t pdsize = 1;
int max_size = ms_get_payload_max_size(); int max_size = ms_get_payload_max_size();
int dlen; int dlen;
bool_t marker_info = mblk_get_marker_info(packet->m);
/* Calculate the payload descriptor size. */ /* Calculate the payload descriptor size. */
if (packet->pd->extended_control_bits_present == TRUE) pdsize++; if (packet->pd->extended_control_bits_present == TRUE) pdsize++;
...@@ -558,7 +559,8 @@ static void packer_process_frame_part(void *p, void *c) { ...@@ -558,7 +559,8 @@ static void packer_process_frame_part(void *p, void *c) {
pdm = allocb(pdsize, 0); pdm = allocb(pdsize, 0);
memset(pdm->b_wptr, 0, pdsize); memset(pdm->b_wptr, 0, pdsize);
mblk_set_timestamp_info(pdm, mblk_get_timestamp_info(packet->m)); mblk_set_timestamp_info(pdm, mblk_get_timestamp_info(packet->m));
mblk_set_marker_info(pdm, mblk_get_marker_info(packet->m)); mblk_set_marker_info(pdm, FALSE);
mblk_set_marker_info(dm, FALSE);
/* Fill the mandatory octet of the payload descriptor. */ /* Fill the mandatory octet of the payload descriptor. */
if (packet->pd->extended_control_bits_present == TRUE) *pdm->b_wptr |= (1 << 7); if (packet->pd->extended_control_bits_present == TRUE) *pdm->b_wptr |= (1 << 7);
if (packet->pd->non_reference_frame == TRUE) *pdm->b_wptr |= (1 << 5); if (packet->pd->non_reference_frame == TRUE) *pdm->b_wptr |= (1 << 5);
...@@ -611,6 +613,10 @@ static void packer_process_frame_part(void *p, void *c) { ...@@ -611,6 +613,10 @@ static void packer_process_frame_part(void *p, void *c) {
ms_queue_put(ctx->output_queue, pdm); ms_queue_put(ctx->output_queue, pdm);
} }
/* Set marker bit on last packet if required. */
mblk_set_marker_info(pdm, marker_info);
mblk_set_marker_info(dm, marker_info);
freeb(packet->m); freeb(packet->m);
packet->m = NULL; packet->m = NULL;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment