mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-28 11:55:39 +00:00
gst/ffmpegcolorspace/gstffmpegcolorspace.c: The 'palette_data' field from incoming RGB caps shouldn't be proxied on o...
Original commit message from CVS: * gst/ffmpegcolorspace/gstffmpegcolorspace.c: (gst_ffmpegcsp_caps_remove_format_info), (gst_ffmpegcsp_get_unit_size): The 'palette_data' field from incoming RGB caps shouldn't be proxied on outgoing YUV caps; also, restrict unit size adjustment in case of paletted data only to the unit that actually has a palette. Fixes #330711.
This commit is contained in:
parent
bd584e6b92
commit
219485946a
2 changed files with 18 additions and 2 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2006-02-24 Tim-Philipp Müller <tim at centricular dot net>
|
||||
|
||||
* gst/ffmpegcolorspace/gstffmpegcolorspace.c:
|
||||
(gst_ffmpegcsp_caps_remove_format_info),
|
||||
(gst_ffmpegcsp_get_unit_size):
|
||||
The 'palette_data' field from incoming RGB caps shouldn't be
|
||||
proxied on outgoing YUV caps; also, restrict unit size
|
||||
adjustment in case of paletted data only to the unit that
|
||||
actually has a palette. Fixes #330711.
|
||||
|
||||
2006-02-24 Tim-Philipp Müller <tim at centricular dot net>
|
||||
|
||||
* gst/ffmpegcolorspace/gstffmpegcolorspace.c:
|
||||
|
|
|
@ -108,6 +108,7 @@ gst_ffmpegcsp_caps_remove_format_info (GstCaps * caps)
|
|||
gst_structure_remove_field (structure, "green_mask");
|
||||
gst_structure_remove_field (structure, "blue_mask");
|
||||
gst_structure_remove_field (structure, "alpha_mask");
|
||||
gst_structure_remove_field (structure, "palette_data");
|
||||
}
|
||||
|
||||
gst_caps_do_simplify (caps);
|
||||
|
@ -398,8 +399,13 @@ gst_ffmpegcsp_get_unit_size (GstBaseTransform * btrans, GstCaps * caps,
|
|||
|
||||
*size = avpicture_get_size (ctx->pix_fmt, width, height);
|
||||
|
||||
if (space->palette)
|
||||
*size -= 4 * 256;
|
||||
/* ffmpeg frames have the palette after the frame data, whereas
|
||||
* GStreamer currently puts it into the caps as 'palette_data' field,
|
||||
* so for paletted data the frame size avpicture_get_size() returns is
|
||||
* 1024 bytes larger than what GStreamer expects. */
|
||||
if (gst_structure_has_field (structure, "palette_data")) {
|
||||
*size -= 4 * 256; /* = AVPALETTE_SIZE */
|
||||
}
|
||||
|
||||
if (ctx->palctrl)
|
||||
av_free (ctx->palctrl);
|
||||
|
|
Loading…
Reference in a new issue