mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 09:40:37 +00:00
gstrtpj2kpay: use tile bit and tile number to determine if there are multiple tiles in packet
Now we don't have to rely on a special value for the tile number. https://bugzilla.gnome.org/show_bug.cgi?id=767817
This commit is contained in:
parent
323244bc04
commit
f07c704b49
1 changed files with 9 additions and 11 deletions
|
@ -188,7 +188,7 @@ gst_rtp_j2k_pay_scan_marker (const guint8 * data, guint size, guint * offset)
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
RtpJ2KHeader header;
|
RtpJ2KHeader header;
|
||||||
gboolean multi_tile_part;
|
gboolean multi_tile;
|
||||||
gboolean bitstream;
|
gboolean bitstream;
|
||||||
guint next_sot;
|
guint next_sot;
|
||||||
gboolean force_packet;
|
gboolean force_packet;
|
||||||
|
@ -271,15 +271,13 @@ find_pu_end (GstRtpJ2KPay * pay, const guint8 * data, guint size,
|
||||||
/* Isot */
|
/* Isot */
|
||||||
tile = GST_READ_UINT16_BE (&data[offset + 2]);
|
tile = GST_READ_UINT16_BE (&data[offset + 2]);
|
||||||
|
|
||||||
if (!state->multi_tile_part) {
|
if (!state->multi_tile) {
|
||||||
|
/* we have detected multiple tiles in this rtp packet : tile bit is now invalid */
|
||||||
/* tile is marked as valid */
|
if (state->header.T == 0 && state->header.tile != tile) {
|
||||||
state->header.T = 0;
|
|
||||||
|
|
||||||
/* we have detected multiple tile parts in this rtp packet : tile bit is now invalid */
|
|
||||||
if (state->header.tile != tile) {
|
|
||||||
state->header.T = 1;
|
state->header.T = 1;
|
||||||
state->multi_tile_part = TRUE;
|
state->multi_tile = TRUE;
|
||||||
|
} else {
|
||||||
|
state->header.T = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
state->header.tile = tile;
|
state->header.tile = tile;
|
||||||
|
@ -363,7 +361,7 @@ gst_rtp_j2k_pay_handle_buffer (GstRTPBasePayload * basepayload,
|
||||||
state.header.priority = 255; /* always 255 for now */
|
state.header.priority = 255; /* always 255 for now */
|
||||||
state.header.tile = 0xffff; /* no tile number */
|
state.header.tile = 0xffff; /* no tile number */
|
||||||
state.header.offset = 0; /* offset of 0 */
|
state.header.offset = 0; /* offset of 0 */
|
||||||
state.multi_tile_part = FALSE;
|
state.multi_tile = FALSE;
|
||||||
state.bitstream = FALSE;
|
state.bitstream = FALSE;
|
||||||
state.next_sot = 0;
|
state.next_sot = 0;
|
||||||
state.force_packet = FALSE;
|
state.force_packet = FALSE;
|
||||||
|
@ -515,7 +513,7 @@ gst_rtp_j2k_pay_handle_buffer (GstRTPBasePayload * basepayload,
|
||||||
gst_buffer_list_add (list, outbuf);
|
gst_buffer_list_add (list, outbuf);
|
||||||
|
|
||||||
/* reset multi_tile */
|
/* reset multi_tile */
|
||||||
state.multi_tile_part = FALSE;
|
state.multi_tile = FALSE;
|
||||||
|
|
||||||
|
|
||||||
/* set MHF to zero if there is no more main header to process */
|
/* set MHF to zero if there is no more main header to process */
|
||||||
|
|
Loading…
Reference in a new issue