FFmpeg
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
copy_block.h
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #ifndef AVCODEC_COPY_BLOCK_H
20 #define AVCODEC_COPY_BLOCK_H
21 
22 #include <stdint.h>
23 
24 #include "libavutil/intreadwrite.h"
25 
26 static inline void copy_block2(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
27 {
28  int i;
29  for(i=0; i<h; i++)
30  {
31  AV_COPY16U(dst, src);
32  dst+=dstStride;
33  src+=srcStride;
34  }
35 }
36 
37 static inline void copy_block4(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
38 {
39  int i;
40  for(i=0; i<h; i++)
41  {
42  AV_COPY32U(dst, src);
43  dst+=dstStride;
44  src+=srcStride;
45  }
46 }
47 
48 static inline void copy_block8(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
49 {
50  int i;
51  for(i=0; i<h; i++)
52  {
53  AV_COPY64U(dst, src);
54  dst+=dstStride;
55  src+=srcStride;
56  }
57 }
58 
59 static inline void copy_block16(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
60 {
61  int i;
62  for(i=0; i<h; i++)
63  {
64  AV_COPY128U(dst, src);
65  dst+=dstStride;
66  src+=srcStride;
67  }
68 }
69 
70 static inline void copy_block9(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
71 {
72  int i;
73  for(i=0; i<h; i++)
74  {
75  AV_COPY64U(dst, src);
76  dst[8]= src[8];
77  dst+=dstStride;
78  src+=srcStride;
79  }
80 }
81 
82 static inline void copy_block17(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
83 {
84  int i;
85  for(i=0; i<h; i++)
86  {
87  AV_COPY128U(dst, src);
88  dst[16]= src[16];
89  dst+=dstStride;
90  src+=srcStride;
91  }
92 }
93 
94 #endif /* AVCODEC_COPY_BLOCK_H */