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 26static 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 37static 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 AV_COPY32U(dst, src); 42 dst += dstStride; 43 src += srcStride; 44 } 45} 46 47static inline void copy_block8(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h) 48{ 49 int i; 50 for (i = 0; i < h; i++) { 51 AV_COPY64U(dst, src); 52 dst += dstStride; 53 src += srcStride; 54 } 55} 56 57static inline void copy_block9(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h) 58{ 59 int i; 60 for (i = 0; i < h; i++) { 61 AV_COPY64U(dst, src); 62 dst[8] = src[8]; 63 dst += dstStride; 64 src += srcStride; 65 } 66} 67 68static inline void copy_block16(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h) 69{ 70 int i; 71 for (i = 0; i < h; i++) { 72 AV_COPY128U(dst, src); 73 dst += dstStride; 74 src += srcStride; 75 } 76} 77 78static inline void copy_block17(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h) 79{ 80 int i; 81 for (i = 0; i < h; i++) { 82 AV_COPY128U(dst, src); 83 dst[16] = src[16]; 84 dst += dstStride; 85 src += srcStride; 86 } 87} 88 89#endif /* AVCODEC_COPY_BLOCK_H */ 90