summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2010-02-16 20:17:50 +0000
committerStefano Sabatini <stefano.sabatini-lala@poste.it>2010-02-16 20:17:50 +0000
commitf47a7cb7774b78be489b1fcb8459423b378d7d75 (patch)
tree73e73887ecb9538056b6d358e310bdaa8c89be24
parenta636b58ce17adad640ae392ffcf3f9dade2bff80 (diff)
downloadffmpeg-f47a7cb7774b78be489b1fcb8459423b378d7d75.tar.gz
Move read_line() and write_line() definition from pixdesc.h to
pixdesc.c, which are now not anymore marked as static inline. Fix the inclusion of the private header intreadwrite.h in the public header pixdesc.h. Originally committed as revision 21854 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavutil/pixdesc.c80
-rw-r--r--libavutil/pixdesc.h82
2 files changed, 84 insertions, 78 deletions
diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
index 837927ba7d..e4ced8ebfa 100644
--- a/libavutil/pixdesc.c
+++ b/libavutil/pixdesc.c
@@ -22,6 +22,86 @@
#include "pixfmt.h"
#include "pixdesc.h"
+#include "intreadwrite.h"
+
+void read_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4],
+ const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component)
+{
+ AVComponentDescriptor comp= desc->comp[c];
+ int plane= comp.plane;
+ int depth= comp.depth_minus1+1;
+ int mask = (1<<depth)-1;
+ int shift= comp.shift;
+ int step = comp.step_minus1+1;
+ int flags= desc->flags;
+
+ if (flags & PIX_FMT_BITSTREAM){
+ int skip = x*step + comp.offset_plus1-1;
+ const uint8_t *p = data[plane] + y*linesize[plane] + (skip>>3);
+ int shift = 8 - depth - (skip&7);
+
+ while(w--){
+ int val = (*p >> shift) & mask;
+ if(read_pal_component)
+ val= data[1][4*val + c];
+ shift -= step;
+ p -= shift>>3;
+ shift &= 7;
+ *dst++= val;
+ }
+ } else {
+ const uint8_t *p = data[plane]+ y*linesize[plane] + x*step + comp.offset_plus1-1;
+
+ while(w--){
+ int val;
+ if(flags & PIX_FMT_BE) val= AV_RB16(p);
+ else val= AV_RL16(p);
+ val = (val>>shift) & mask;
+ if(read_pal_component)
+ val= data[1][4*val + c];
+ p+= step;
+ *dst++= val;
+ }
+ }
+}
+
+void write_line(const uint16_t *src, uint8_t *data[4], const int linesize[4],
+ const AVPixFmtDescriptor *desc, int x, int y, int c, int w)
+{
+ AVComponentDescriptor comp = desc->comp[c];
+ int plane = comp.plane;
+ int depth = comp.depth_minus1+1;
+ int step = comp.step_minus1+1;
+ int flags = desc->flags;
+
+ if (flags & PIX_FMT_BITSTREAM) {
+ int skip = x*step + comp.offset_plus1-1;
+ uint8_t *p = data[plane] + y*linesize[plane] + (skip>>3);
+ int shift = 8 - depth - (skip&7);
+
+ while (w--) {
+ *p |= *src++ << shift;
+ shift -= step;
+ p -= shift>>3;
+ shift &= 7;
+ }
+ } else {
+ int shift = comp.shift;
+ uint8_t *p = data[plane]+ y*linesize[plane] + x*step + comp.offset_plus1-1;
+
+ while (w--) {
+ if (flags & PIX_FMT_BE) {
+ uint16_t val = AV_RB16(p) | (*src++<<shift);
+ AV_WB16(p, val);
+ } else {
+ uint16_t val = AV_RL16(p) | (*src++<<shift);
+ AV_WL16(p, val);
+ }
+ p+= step;
+ }
+ }
+}
+
const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = {
[PIX_FMT_YUV420P] = {
.name = "yuv420p",
diff --git a/libavutil/pixdesc.h b/libavutil/pixdesc.h
index 4b003fd552..8e4c85d715 100644
--- a/libavutil/pixdesc.h
+++ b/libavutil/pixdesc.h
@@ -24,8 +24,6 @@
#include <inttypes.h>
-#include "intreadwrite.h"
-
typedef struct AVComponentDescriptor{
uint16_t plane :2; ///< which of the 4 planes contains the component
@@ -110,46 +108,8 @@ extern const AVPixFmtDescriptor av_pix_fmt_descriptors[];
* component c in data[1] to dst, rather than the palette indexes in
* data[0]. The behavior is undefined if the format is not paletted.
*/
-static inline void read_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4],
- const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component)
-{
- AVComponentDescriptor comp= desc->comp[c];
- int plane= comp.plane;
- int depth= comp.depth_minus1+1;
- int mask = (1<<depth)-1;
- int shift= comp.shift;
- int step = comp.step_minus1+1;
- int flags= desc->flags;
-
- if (flags & PIX_FMT_BITSTREAM){
- int skip = x*step + comp.offset_plus1-1;
- const uint8_t *p = data[plane] + y*linesize[plane] + (skip>>3);
- int shift = 8 - depth - (skip&7);
-
- while(w--){
- int val = (*p >> shift) & mask;
- if(read_pal_component)
- val= data[1][4*val + c];
- shift -= step;
- p -= shift>>3;
- shift &= 7;
- *dst++= val;
- }
- } else {
- const uint8_t *p = data[plane]+ y*linesize[plane] + x*step + comp.offset_plus1-1;
-
- while(w--){
- int val;
- if(flags & PIX_FMT_BE) val= AV_RB16(p);
- else val= AV_RL16(p);
- val = (val>>shift) & mask;
- if(read_pal_component)
- val= data[1][4*val + c];
- p+= step;
- *dst++= val;
- }
- }
-}
+void read_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4],
+ const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component);
/**
* Writes the values from src to the pixel format component c of an
@@ -165,42 +125,8 @@ static inline void read_line(uint16_t *dst, const uint8_t *data[4], const int li
* @param w the width of the line to write, that is the number of
* values to write to the image line
*/
-static inline void write_line(const uint16_t *src, uint8_t *data[4], const int linesize[4],
- const AVPixFmtDescriptor *desc, int x, int y, int c, int w)
-{
- AVComponentDescriptor comp = desc->comp[c];
- int plane = comp.plane;
- int depth = comp.depth_minus1+1;
- int step = comp.step_minus1+1;
- int flags = desc->flags;
-
- if (flags & PIX_FMT_BITSTREAM) {
- int skip = x*step + comp.offset_plus1-1;
- uint8_t *p = data[plane] + y*linesize[plane] + (skip>>3);
- int shift = 8 - depth - (skip&7);
-
- while (w--) {
- *p |= *src++ << shift;
- shift -= step;
- p -= shift>>3;
- shift &= 7;
- }
- } else {
- int shift = comp.shift;
- uint8_t *p = data[plane]+ y*linesize[plane] + x*step + comp.offset_plus1-1;
-
- while (w--) {
- if (flags & PIX_FMT_BE) {
- uint16_t val = AV_RB16(p) | (*src++<<shift);
- AV_WB16(p, val);
- } else {
- uint16_t val = AV_RL16(p) | (*src++<<shift);
- AV_WL16(p, val);
- }
- p+= step;
- }
- }
-}
+void write_line(const uint16_t *src, uint8_t *data[4], const int linesize[4],
+ const AVPixFmtDescriptor *desc, int x, int y, int c, int w);
/**
* Returns the pixel format corresponding to name.