16
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
21
#include "libavutil/avutil.h"
20
22
#include "libavutil/colorspace.h"
23
#include "libavutil/mem.h"
21
24
#include "libavutil/pixdesc.h"
22
25
#include "drawutils.h"
24
27
enum { RED = 0, GREEN, BLUE, ALPHA };
26
29
int ff_fill_line_with_color(uint8_t *line[4], int pixel_step[4], int w, uint8_t dst_color[4],
27
enum PixelFormat pix_fmt, uint8_t rgba_color[4],
30
enum AVPixelFormat pix_fmt, uint8_t rgba_color[4],
28
31
int *is_packed_rgba, uint8_t rgba_map_ptr[4])
30
33
uint8_t rgba_map[4] = {0};
32
const AVPixFmtDescriptor *pix_desc = &av_pix_fmt_descriptors[pix_fmt];
35
const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(pix_fmt);
33
36
int hsub = pix_desc->log2_chroma_w;
35
38
*is_packed_rgba = 1;
37
case PIX_FMT_ARGB: rgba_map[ALPHA] = 0; rgba_map[RED ] = 1; rgba_map[GREEN] = 2; rgba_map[BLUE ] = 3; break;
38
case PIX_FMT_ABGR: rgba_map[ALPHA] = 0; rgba_map[BLUE ] = 1; rgba_map[GREEN] = 2; rgba_map[RED ] = 3; break;
40
case PIX_FMT_RGB24: rgba_map[RED ] = 0; rgba_map[GREEN] = 1; rgba_map[BLUE ] = 2; rgba_map[ALPHA] = 3; break;
42
case PIX_FMT_BGR24: rgba_map[BLUE ] = 0; rgba_map[GREEN] = 1; rgba_map[RED ] = 2; rgba_map[ALPHA] = 3; break;
40
case AV_PIX_FMT_ARGB: rgba_map[ALPHA] = 0; rgba_map[RED ] = 1; rgba_map[GREEN] = 2; rgba_map[BLUE ] = 3; break;
41
case AV_PIX_FMT_ABGR: rgba_map[ALPHA] = 0; rgba_map[BLUE ] = 1; rgba_map[GREEN] = 2; rgba_map[RED ] = 3; break;
43
case AV_PIX_FMT_RGB24: rgba_map[RED ] = 0; rgba_map[GREEN] = 1; rgba_map[BLUE ] = 2; rgba_map[ALPHA] = 3; break;
45
case AV_PIX_FMT_BGR24: rgba_map[BLUE ] = 0; rgba_map[GREEN] = 1; rgba_map[RED ] = 2; rgba_map[ALPHA] = 3; break;
44
47
*is_packed_rgba = 0;