X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fbytestream.h;h=98f00879be29cf47ede9f7dcdf720c8478630f66;hb=29ae0565d98bb41e54fc74f74c330d3214825f47;hp=b316f2d3f3b94220e8bc9d5c0bcc9e243b21c178;hpb=99545457bf1175d55e4eaa2c061dbf0faeb661ec;p=ffmpeg diff --git a/libavcodec/bytestream.h b/libavcodec/bytestream.h index b316f2d3f3b..98f00879be2 100644 --- a/libavcodec/bytestream.h +++ b/libavcodec/bytestream.h @@ -2,49 +2,60 @@ * Bytestream functions * copyright (c) 2006 Baptiste Coudurier * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * FFmpeg is distributed in the hope that it will be useful, + * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef FFMPEG_BYTESTREAM_H -#define FFMPEG_BYTESTREAM_H +#ifndef AVCODEC_BYTESTREAM_H +#define AVCODEC_BYTESTREAM_H -#include "common.h" +#include +#include "libavutil/common.h" +#include "libavutil/intreadwrite.h" -#define DEF(name, bytes, read, write)\ -static av_always_inline unsigned int bytestream_get_ ## name(uint8_t **b){\ +#define DEF_T(type, name, bytes, read, write) \ +static av_always_inline type bytestream_get_ ## name(const uint8_t **b){\ (*b) += bytes;\ return read(*b - bytes);\ }\ -static av_always_inline void bytestream_put_ ##name(uint8_t **b, const unsigned int value){\ +static av_always_inline void bytestream_put_ ##name(uint8_t **b, const type value){\ write(*b, value);\ (*b) += bytes;\ } -DEF(le32, 4, AV_RL32, AV_WL32) -DEF(le24, 3, AV_RL24, AV_WL24) -DEF(le16, 2, AV_RL16, AV_WL16) -DEF(be32, 4, AV_RB32, AV_WB32) -DEF(be24, 3, AV_RB24, AV_WB24) -DEF(be16, 2, AV_RB16, AV_WB16) -DEF(byte, 1, AV_RB8 , AV_WB8 ) +#define DEF(name, bytes, read, write) \ + DEF_T(unsigned int, name, bytes, read, write) +#define DEF64(name, bytes, read, write) \ + DEF_T(uint64_t, name, bytes, read, write) + +DEF64(le64, 8, AV_RL64, AV_WL64) +DEF (le32, 4, AV_RL32, AV_WL32) +DEF (le24, 3, AV_RL24, AV_WL24) +DEF (le16, 2, AV_RL16, AV_WL16) +DEF64(be64, 8, AV_RB64, AV_WB64) +DEF (be32, 4, AV_RB32, AV_WB32) +DEF (be24, 3, AV_RB24, AV_WB24) +DEF (be16, 2, AV_RB16, AV_WB16) +DEF (byte, 1, AV_RB8 , AV_WB8 ) #undef DEF +#undef DEF64 +#undef DEF_T -static av_always_inline unsigned int bytestream_get_buffer(uint8_t **b, uint8_t *dst, unsigned int size) +static av_always_inline unsigned int bytestream_get_buffer(const uint8_t **b, uint8_t *dst, unsigned int size) { memcpy(dst, *b, size); (*b) += size; @@ -57,4 +68,4 @@ static av_always_inline void bytestream_put_buffer(uint8_t **b, const uint8_t *s (*b) += size; } -#endif /* FFMPEG_BYTESTREAM_H */ +#endif /* AVCODEC_BYTESTREAM_H */