annotate pixdesc.h @ 10424:94595d0e617c libavcodec

Move autocorrelation function from flacenc.c to lpc.c. Also rename the corresponding dsputil functions and remove their dependency on the FLAC encoder. Fixes Issue1486.
author jbr
date Sat, 17 Oct 2009 21:00:39 +0000
parents 2887f410011f
children 0a97bc8da768
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
1 /*
9043
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
2 * pixel format descriptor
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
3 * Copyright (c) 2009 Michael Niedermayer <michaelni@gmx.at>
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
4 *
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
5 * This file is part of FFmpeg.
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
6 *
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
11 *
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
15 * Lesser General Public License for more details.
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
16 *
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
20 */
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
21
9529
e885f6298a7a Add missing header inclusion guard.
stefano
parents: 9528
diff changeset
22 #ifndef AVCODEC_PIXDESC_H
e885f6298a7a Add missing header inclusion guard.
stefano
parents: 9528
diff changeset
23 #define AVCODEC_PIXDESC_H
e885f6298a7a Add missing header inclusion guard.
stefano
parents: 9528
diff changeset
24
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
25 #include <inttypes.h>
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
26
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
27 #include "libavutil/intreadwrite.h"
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
28
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
29 typedef struct AVComponentDescriptor{
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
30 uint16_t plane :2; ///< which of the 4 planes contains the component
9323
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
31
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
32 /**
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
33 * Number of elements between 2 horizontally consecutive pixels minus 1.
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
34 * Elements are bits for bitstream formats, bytes otherwise.
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
35 */
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
36 uint16_t step_minus1 :3;
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
37
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
38 /**
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
39 * Number of elements before the component of the first pixel plus 1.
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
40 * Elements are bits for bitstream formats, bytes otherwise.
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
41 */
f347365f2da4 Make the step and offset fields of the component descriptor express a
stefano
parents: 9321
diff changeset
42 uint16_t offset_plus1 :3;
9170
14e656ca3e17 Expand "lsb" to "least significant bits".
stefano
parents: 9129
diff changeset
43 uint16_t shift :3; ///< number of least significant bits that must be shifted away to get the value
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
44 uint16_t depth_minus1 :4; ///< number of bits in the component minus 1
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
45 }AVComponentDescriptor;
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
46
9019
895f99d00718 AVPixFmtDescriptor doxy
michael
parents: 9018
diff changeset
47 /**
9043
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
48 * Descriptor that unambiguously describes how the bits of a pixel are
9019
895f99d00718 AVPixFmtDescriptor doxy
michael
parents: 9018
diff changeset
49 * stored in the up to 4 data planes of an image. It also stores the
895f99d00718 AVPixFmtDescriptor doxy
michael
parents: 9018
diff changeset
50 * subsampling factors and number of components.
895f99d00718 AVPixFmtDescriptor doxy
michael
parents: 9018
diff changeset
51 *
9043
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
52 * @note This is separate of the colorspace (RGB, YCbCr, YPbPr, JPEG-style YUV
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
53 * and all the YUV variants) AVPixFmtDescriptor just stores how values
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
54 * are stored not what these values represent.
9019
895f99d00718 AVPixFmtDescriptor doxy
michael
parents: 9018
diff changeset
55 */
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
56 typedef struct AVPixFmtDescriptor{
9187
e10efe27c6b1 Implement a name field for AVPixFmtDescriptor.
stefano
parents: 9170
diff changeset
57 const char *name;
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
58 uint8_t nb_channels; ///< The number of components each pixel has, (1-4)
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
59
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
60 /**
9043
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
61 * Amount to shift the luma width right to find the chroma width.
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
62 * For YV12 this is 1 for example.
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
63 * chroma_width = -((-luma_width) >> log2_chroma_w)
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
64 * The note above is needed to ensure rounding up.
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
65 */
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
66 uint8_t log2_chroma_w; ///< chroma_width = -((-luma_width )>>log2_chroma_w)
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
67
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
68 /**
9043
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
69 * Amount to shift the luma height right to find the chroma height.
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
70 * For YV12 this is 1 for example.
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
71 * chroma_height= -((-luma_height) >> log2_chroma_h)
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
72 * The note above is needed to ensure rounding up.
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
73 */
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
74 uint8_t log2_chroma_h;
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
75 uint8_t flags;
9043
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
76 AVComponentDescriptor comp[4]; ///< parameters that describe how pixels are packed
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
77 }AVPixFmtDescriptor;
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
78
9043
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
79 #define PIX_FMT_BE 1 ///< big-endian
9129
913ae1f5c090 Fix typo: "i" -> "in".
stefano
parents: 9043
diff changeset
80 #define PIX_FMT_PAL 2 ///< Pixel format has a palette in data[1], values are indexes in this palette.
9043
47e456d3f15b spelling/wording/grammar cosmetics
diego
parents: 9019
diff changeset
81 #define PIX_FMT_BITSTREAM 4 ///< All values of a component are bit-wise packed end to end.
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
82
9234
49340eb6f96f Export to pixdesc.h the av_pix_fmt_descriptors array.
stefano
parents: 9187
diff changeset
83 /**
49340eb6f96f Export to pixdesc.h the av_pix_fmt_descriptors array.
stefano
parents: 9187
diff changeset
84 * The array of all the pixel format descriptors.
49340eb6f96f Export to pixdesc.h the av_pix_fmt_descriptors array.
stefano
parents: 9187
diff changeset
85 */
49340eb6f96f Export to pixdesc.h the av_pix_fmt_descriptors array.
stefano
parents: 9187
diff changeset
86 extern const AVPixFmtDescriptor av_pix_fmt_descriptors[];
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
87
9321
fdd902365b49 Document read_line().
stefano
parents: 9310
diff changeset
88 /**
9822
2887f410011f Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents: 9579
diff changeset
89 * Reads a line from an image, and writes to dst the values of the
2887f410011f Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents: 9579
diff changeset
90 * pixel format component c.
9321
fdd902365b49 Document read_line().
stefano
parents: 9310
diff changeset
91 *
fdd902365b49 Document read_line().
stefano
parents: 9310
diff changeset
92 * @param data the array containing the pointers to the planes of the image
fdd902365b49 Document read_line().
stefano
parents: 9310
diff changeset
93 * @param linesizes the array containing the linesizes of the image
fdd902365b49 Document read_line().
stefano
parents: 9310
diff changeset
94 * @param desc the pixel format descriptor for the image
fdd902365b49 Document read_line().
stefano
parents: 9310
diff changeset
95 * @param x the horizontal coordinate of the first pixel to read
fdd902365b49 Document read_line().
stefano
parents: 9310
diff changeset
96 * @param y the vertical coordinate of the first pixel to read
fdd902365b49 Document read_line().
stefano
parents: 9310
diff changeset
97 * @param w the width of the line to read, that is the number of
9822
2887f410011f Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents: 9579
diff changeset
98 * values to write to dst
9330
f01741cc9471 Extend read_line() to make it take a read_pal_component parameter.
stefano
parents: 9325
diff changeset
99 * @param read_pal_component if not zero and the format is a paletted
9822
2887f410011f Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents: 9579
diff changeset
100 * format writes to dst the values corresponding to the palette
2887f410011f Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents: 9579
diff changeset
101 * component c in data[1], rather than the palette indexes in
9330
f01741cc9471 Extend read_line() to make it take a read_pal_component parameter.
stefano
parents: 9325
diff changeset
102 * data[0]. The behavior is undefined if the format is not paletted.
9321
fdd902365b49 Document read_line().
stefano
parents: 9310
diff changeset
103 */
9330
f01741cc9471 Extend read_line() to make it take a read_pal_component parameter.
stefano
parents: 9325
diff changeset
104 static inline void read_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4],
f01741cc9471 Extend read_line() to make it take a read_pal_component parameter.
stefano
parents: 9325
diff changeset
105 const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component)
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
106 {
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
107 AVComponentDescriptor comp= desc->comp[c];
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
108 int plane= comp.plane;
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
109 int depth= comp.depth_minus1+1;
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
110 int mask = (1<<depth)-1;
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
111 int shift= comp.shift;
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
112 int step = comp.step_minus1+1;
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
113 int flags= desc->flags;
9324
f8cc0e2e7740 Add/fix support for bitstream formats reading in read_line().
stefano
parents: 9323
diff changeset
114
f8cc0e2e7740 Add/fix support for bitstream formats reading in read_line().
stefano
parents: 9323
diff changeset
115 if (flags & PIX_FMT_BITSTREAM){
9534
717f799077ad Make read_line() do not depend on put_bits.h and speed up it.
stefano
parents: 9529
diff changeset
116 int skip = x*step + comp.offset_plus1-1;
717f799077ad Make read_line() do not depend on put_bits.h and speed up it.
stefano
parents: 9529
diff changeset
117 const uint8_t *p = data[plane] + y*linesize[plane] + (skip>>3);
717f799077ad Make read_line() do not depend on put_bits.h and speed up it.
stefano
parents: 9529
diff changeset
118 int shift = 8 - depth - (skip&7);
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
119
9324
f8cc0e2e7740 Add/fix support for bitstream formats reading in read_line().
stefano
parents: 9323
diff changeset
120 while(w--){
9534
717f799077ad Make read_line() do not depend on put_bits.h and speed up it.
stefano
parents: 9529
diff changeset
121 int val = (*p >> shift) & mask;
9330
f01741cc9471 Extend read_line() to make it take a read_pal_component parameter.
stefano
parents: 9325
diff changeset
122 if(read_pal_component)
9324
f8cc0e2e7740 Add/fix support for bitstream formats reading in read_line().
stefano
parents: 9323
diff changeset
123 val= data[1][4*val + c];
9534
717f799077ad Make read_line() do not depend on put_bits.h and speed up it.
stefano
parents: 9529
diff changeset
124 shift -= step;
717f799077ad Make read_line() do not depend on put_bits.h and speed up it.
stefano
parents: 9529
diff changeset
125 p -= shift>>3;
717f799077ad Make read_line() do not depend on put_bits.h and speed up it.
stefano
parents: 9529
diff changeset
126 shift &= 7;
9324
f8cc0e2e7740 Add/fix support for bitstream formats reading in read_line().
stefano
parents: 9323
diff changeset
127 *dst++= val;
f8cc0e2e7740 Add/fix support for bitstream formats reading in read_line().
stefano
parents: 9323
diff changeset
128 }
f8cc0e2e7740 Add/fix support for bitstream formats reading in read_line().
stefano
parents: 9323
diff changeset
129 } else {
9325
2cf20144e7cb Reindent after the last patch.
stefano
parents: 9324
diff changeset
130 const uint8_t *p = data[plane]+ y*linesize[plane] + x*step + comp.offset_plus1-1;
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
131
9325
2cf20144e7cb Reindent after the last patch.
stefano
parents: 9324
diff changeset
132 while(w--){
2cf20144e7cb Reindent after the last patch.
stefano
parents: 9324
diff changeset
133 int val;
2cf20144e7cb Reindent after the last patch.
stefano
parents: 9324
diff changeset
134 if(flags & PIX_FMT_BE) val= AV_RB16(p);
2cf20144e7cb Reindent after the last patch.
stefano
parents: 9324
diff changeset
135 else val= AV_RL16(p);
2cf20144e7cb Reindent after the last patch.
stefano
parents: 9324
diff changeset
136 val = (val>>shift) & mask;
9330
f01741cc9471 Extend read_line() to make it take a read_pal_component parameter.
stefano
parents: 9325
diff changeset
137 if(read_pal_component)
9325
2cf20144e7cb Reindent after the last patch.
stefano
parents: 9324
diff changeset
138 val= data[1][4*val + c];
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
139 p+= step;
9325
2cf20144e7cb Reindent after the last patch.
stefano
parents: 9324
diff changeset
140 *dst++= val;
2cf20144e7cb Reindent after the last patch.
stefano
parents: 9324
diff changeset
141 }
9324
f8cc0e2e7740 Add/fix support for bitstream formats reading in read_line().
stefano
parents: 9323
diff changeset
142 }
9018
98995efdf3aa Pixel Format descriptor, try #1.
michael
parents:
diff changeset
143 }
9528
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
144
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
145 /**
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
146 * Writes the values from src to the pixel format component c of an
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
147 * image line.
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
148 *
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
149 * @param src array containing the values to write
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
150 * @param data the array containing the pointers to the planes of the
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
151 * image to write into. It is supposed to be zeroed.
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
152 * @param linesizes the array containing the linesizes of the image
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
153 * @param desc the pixel format descriptor for the image
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
154 * @param x the horizontal coordinate of the first pixel to write
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
155 * @param y the vertical coordinate of the first pixel to write
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
156 * @param w the width of the line to write, that is the number of
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
157 * values to write to the image line
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
158 */
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
159 static inline void write_line(const uint16_t *src, uint8_t *data[4], const int linesize[4],
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
160 const AVPixFmtDescriptor *desc, int x, int y, int c, int w)
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
161 {
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
162 AVComponentDescriptor comp = desc->comp[c];
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
163 int plane = comp.plane;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
164 int depth = comp.depth_minus1+1;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
165 int step = comp.step_minus1+1;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
166 int flags = desc->flags;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
167
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
168 if (flags & PIX_FMT_BITSTREAM) {
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
169 int skip = x*step + comp.offset_plus1-1;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
170 uint8_t *p = data[plane] + y*linesize[plane] + (skip>>3);
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
171 int shift = 8 - depth - (skip&7);
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
172
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
173 while (w--) {
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
174 *p |= *src++ << shift;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
175 shift -= step;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
176 p -= shift>>3;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
177 shift &= 7;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
178 }
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
179 } else {
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
180 int shift = comp.shift;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
181 uint8_t *p = data[plane]+ y*linesize[plane] + x*step + comp.offset_plus1-1;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
182
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
183 while (w--) {
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
184 if (flags & PIX_FMT_BE) {
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
185 uint16_t val = AV_RB16(p) | (*src++<<shift);
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
186 AV_WB16(p, val);
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
187 } else {
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
188 uint16_t val = AV_RL16(p) | (*src++<<shift);
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
189 AV_WL16(p, val);
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
190 }
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
191 p+= step;
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
192 }
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
193 }
dad1c3ed61f1 Implement a write_line() function.
stefano
parents: 9430
diff changeset
194 }
9529
e885f6298a7a Add missing header inclusion guard.
stefano
parents: 9528
diff changeset
195
9579
8665a1518257 Implement av_get_bits_per_pixel().
stefano
parents: 9534
diff changeset
196 /**
8665a1518257 Implement av_get_bits_per_pixel().
stefano
parents: 9534
diff changeset
197 * Returns the number of bits per pixel used by the pixel format
8665a1518257 Implement av_get_bits_per_pixel().
stefano
parents: 9534
diff changeset
198 * described by pixdesc.
8665a1518257 Implement av_get_bits_per_pixel().
stefano
parents: 9534
diff changeset
199 *
8665a1518257 Implement av_get_bits_per_pixel().
stefano
parents: 9534
diff changeset
200 * The returned number of bits refers to the number of bits actually
8665a1518257 Implement av_get_bits_per_pixel().
stefano
parents: 9534
diff changeset
201 * used for storing the pixel information, that is padding bits are
8665a1518257 Implement av_get_bits_per_pixel().
stefano
parents: 9534
diff changeset
202 * not counted.
8665a1518257 Implement av_get_bits_per_pixel().
stefano
parents: 9534
diff changeset
203 */
8665a1518257 Implement av_get_bits_per_pixel().
stefano
parents: 9534
diff changeset
204 int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc);
8665a1518257 Implement av_get_bits_per_pixel().
stefano
parents: 9534
diff changeset
205
9529
e885f6298a7a Add missing header inclusion guard.
stefano
parents: 9528
diff changeset
206 #endif /* AVCODEC_PIXDESC_H */