FFmpeg
4.4.4
libavcodec
mips
pixblockdsp_init_mips.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015 Shivraj Patil (Shivraj.Patil@imgtec.com)
3
* Zhou Xiaoyong <zhouxiaoyong@loongson.cn>
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
#include "
libavutil/mips/cpu.h
"
23
#include "
pixblockdsp_mips.h
"
24
25
void
ff_pixblockdsp_init_mips
(
PixblockDSPContext
*
c
,
AVCodecContext
*avctx,
26
unsigned
high_bit_depth)
27
{
28
int
cpu_flags
=
av_get_cpu_flags
();
29
30
if
(
have_mmi
(
cpu_flags
)) {
31
c
->diff_pixels =
ff_diff_pixels_mmi
;
32
33
if
(!high_bit_depth || avctx->
codec_type
!=
AVMEDIA_TYPE_VIDEO
) {
34
c
->get_pixels =
ff_get_pixels_8_mmi
;
35
}
36
}
37
38
if
(
have_msa
(
cpu_flags
)) {
39
c
->diff_pixels =
ff_diff_pixels_msa
;
40
41
switch
(avctx->
bits_per_raw_sample
) {
42
case
9:
43
case
10:
44
case
12:
45
case
14:
46
c
->get_pixels =
ff_get_pixels_16_msa
;
47
break
;
48
default
:
49
if
(avctx->
bits_per_raw_sample
<= 8 || avctx->
codec_type
!=
50
AVMEDIA_TYPE_VIDEO
) {
51
c
->get_pixels =
ff_get_pixels_8_msa
;
52
}
53
break
;
54
}
55
}
56
}
cpu_flags
static atomic_int cpu_flags
Definition:
cpu.c:50
av_get_cpu_flags
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
Definition:
cpu.c:95
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition:
avutil.h:201
cpu.h
have_msa
#define have_msa(flags)
Definition:
cpu.h:26
have_mmi
#define have_mmi(flags)
Definition:
cpu.h:25
ff_pixblockdsp_init_mips
void ff_pixblockdsp_init_mips(PixblockDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth)
Definition:
pixblockdsp_init_mips.c:25
pixblockdsp_mips.h
ff_diff_pixels_mmi
void ff_diff_pixels_mmi(int16_t *av_restrict block, const uint8_t *src1, const uint8_t *src2, ptrdiff_t stride)
Definition:
pixblockdsp_mmi.c:97
ff_get_pixels_8_msa
void ff_get_pixels_8_msa(int16_t *restrict dst, const uint8_t *src, ptrdiff_t stride)
ff_diff_pixels_msa
void ff_diff_pixels_msa(int16_t *av_restrict block, const uint8_t *src1, const uint8_t *src2, ptrdiff_t stride)
Definition:
pixblockdsp_msa.c:139
ff_get_pixels_8_mmi
void ff_get_pixels_8_mmi(int16_t *av_restrict block, const uint8_t *pixels, ptrdiff_t stride)
Definition:
pixblockdsp_mmi.c:28
ff_get_pixels_16_msa
void ff_get_pixels_16_msa(int16_t *restrict dst, const uint8_t *src, ptrdiff_t stride)
AVCodecContext
main external API structure.
Definition:
avcodec.h:536
AVCodecContext::codec_type
enum AVMediaType codec_type
Definition:
avcodec.h:544
AVCodecContext::bits_per_raw_sample
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
Definition:
avcodec.h:1747
PixblockDSPContext
Definition:
pixblockdsp.h:28
c
static double c[64]
Definition:
vsrc_mptestsrc.c:92
Generated on Sun Feb 25 2024 16:38:44 for FFmpeg by
1.9.1