ffmpeg / libavcodec / fmtconvert.h @ 0e09997f
History | View | Annotate | Download (3.17 KB)
1 |
/*
|
---|---|
2 |
* Format Conversion Utils
|
3 |
* Copyright (c) 2000, 2001 Fabrice Bellard
|
4 |
* Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
|
5 |
*
|
6 |
* This file is part of FFmpeg.
|
7 |
*
|
8 |
* FFmpeg is free software; you can redistribute it and/or
|
9 |
* modify it under the terms of the GNU Lesser General Public
|
10 |
* License as published by the Free Software Foundation; either
|
11 |
* version 2.1 of the License, or (at your option) any later version.
|
12 |
*
|
13 |
* FFmpeg is distributed in the hope that it will be useful,
|
14 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16 |
* Lesser General Public License for more details.
|
17 |
*
|
18 |
* You should have received a copy of the GNU Lesser General Public
|
19 |
* License along with FFmpeg; if not, write to the Free Software
|
20 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
21 |
*/
|
22 |
|
23 |
#ifndef AVCODEC_FMTCONVERT_H
|
24 |
#define AVCODEC_FMTCONVERT_H
|
25 |
|
26 |
#include "avcodec.h" |
27 |
|
28 |
typedef struct FmtConvertContext { |
29 |
/**
|
30 |
* Convert an array of int32_t to float and multiply by a float value.
|
31 |
* @param dst destination array of float.
|
32 |
* constraints: 16-byte aligned
|
33 |
* @param src source array of int32_t.
|
34 |
* constraints: 16-byte aligned
|
35 |
* @param len number of elements to convert.
|
36 |
* constraints: multiple of 8
|
37 |
*/
|
38 |
void (*int32_to_float_fmul_scalar)(float *dst, const int *src, float mul, int len); |
39 |
|
40 |
/**
|
41 |
* Convert an array of float to an array of int16_t.
|
42 |
*
|
43 |
* Convert floats from in the range [-32768.0,32767.0] to ints
|
44 |
* without rescaling
|
45 |
*
|
46 |
* @param dst destination array of int16_t.
|
47 |
* constraints: 16-byte aligned
|
48 |
* @param src source array of float.
|
49 |
* constraints: 16-byte aligned
|
50 |
* @param len number of elements to convert.
|
51 |
* constraints: multiple of 8
|
52 |
*/
|
53 |
void (*float_to_int16)(int16_t *dst, const float *src, long len); |
54 |
|
55 |
/**
|
56 |
* Convert multiple arrays of float to an interleaved array of int16_t.
|
57 |
*
|
58 |
* Convert floats from in the range [-32768.0,32767.0] to ints
|
59 |
* without rescaling
|
60 |
*
|
61 |
* @param dst destination array of interleaved int16_t.
|
62 |
* constraints: 16-byte aligned
|
63 |
* @param src source array of float arrays, one for each channel.
|
64 |
* constraints: 16-byte aligned
|
65 |
* @param len number of elements to convert.
|
66 |
* constraints: multiple of 8
|
67 |
* @param channels number of channels
|
68 |
*/
|
69 |
void (*float_to_int16_interleave)(int16_t *dst, const float **src, |
70 |
long len, int channels); |
71 |
} FmtConvertContext; |
72 |
|
73 |
void ff_fmt_convert_init(FmtConvertContext *c, AVCodecContext *avctx);
|
74 |
|
75 |
void ff_fmt_convert_init_arm(FmtConvertContext *c, AVCodecContext *avctx);
|
76 |
void ff_fmt_convert_init_altivec(FmtConvertContext *c, AVCodecContext *avctx);
|
77 |
void ff_fmt_convert_init_x86(FmtConvertContext *c, AVCodecContext *avctx);
|
78 |
|
79 |
/* ffdshow custom code */
|
80 |
void float_interleave(float *dst, const float **src, long len, int channels); |
81 |
void float_interleave_noscale(float *dst, const float **src, long len, int channels); |
82 |
|
83 |
#endif /* AVCODEC_FMTCONVERT_H */ |