/src/ffmpeg/libavcodec/dv_internal.h
Line | Count | Source |
1 | | /* |
2 | | * DV encoder/decoder shared code |
3 | | * Copyright (c) 2002 Fabrice Bellard |
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 | | #ifndef AVCODEC_DV_INTERNAL_H |
23 | | #define AVCODEC_DV_INTERNAL_H |
24 | | |
25 | | #include <stdint.h> |
26 | | |
27 | | #include "dv.h" |
28 | | #include "dv_profile.h" |
29 | | |
30 | | typedef struct DVwork_chunk { |
31 | | uint16_t buf_offset; |
32 | | uint16_t mb_coordinates[5]; |
33 | | } DVwork_chunk; |
34 | | |
35 | | void ff_dv_init_dynamic_tables(DVwork_chunk *work_chunks, const AVDVProfile *d); |
36 | | |
37 | | static inline int dv_work_pool_size(const AVDVProfile *d) |
38 | 1.40k | { |
39 | 1.40k | int size = d->n_difchan * d->difseg_size * 27; |
40 | 1.40k | if (DV_PROFILE_IS_1080i50(d)) |
41 | 5 | size -= 3 * 27; |
42 | 1.40k | if (DV_PROFILE_IS_720p50(d)) |
43 | 17 | size -= 4 * 27; |
44 | 1.40k | return size; |
45 | 1.40k | } Unexecuted instantiation: dvenc.c:dv_work_pool_size Unexecuted instantiation: dv.c:dv_work_pool_size dvdec.c:dv_work_pool_size Line | Count | Source | 38 | 1.40k | { | 39 | 1.40k | int size = d->n_difchan * d->difseg_size * 27; | 40 | 1.40k | if (DV_PROFILE_IS_1080i50(d)) | 41 | 5 | size -= 3 * 27; | 42 | 1.40k | if (DV_PROFILE_IS_720p50(d)) | 43 | 17 | size -= 4 * 27; | 44 | 1.40k | return size; | 45 | 1.40k | } |
|
46 | | |
47 | | static inline void dv_calculate_mb_xy(const AVDVProfile *sys, |
48 | | const uint8_t *buf, |
49 | | const DVwork_chunk *work_chunk, |
50 | | int m, int *mb_x, int *mb_y) |
51 | 2.69M | { |
52 | 2.69M | *mb_x = work_chunk->mb_coordinates[m] & 0xff; |
53 | 2.69M | *mb_y = work_chunk->mb_coordinates[m] >> 8; |
54 | | |
55 | | /* We work with 720p frames split in half. |
56 | | * The odd half-frame (chan == 2,3) is displaced :-( */ |
57 | 2.69M | if (sys->height == 720 && !(buf[1] & 0x0C)) |
58 | | /* shifting the Y coordinate down by 72/2 macro blocks */ |
59 | 78.3k | *mb_y -= (*mb_y > 17) ? 18 : -72; |
60 | 2.69M | } Unexecuted instantiation: dvenc.c:dv_calculate_mb_xy Unexecuted instantiation: dv.c:dv_calculate_mb_xy dvdec.c:dv_calculate_mb_xy Line | Count | Source | 51 | 2.69M | { | 52 | 2.69M | *mb_x = work_chunk->mb_coordinates[m] & 0xff; | 53 | 2.69M | *mb_y = work_chunk->mb_coordinates[m] >> 8; | 54 | | | 55 | | /* We work with 720p frames split in half. | 56 | | * The odd half-frame (chan == 2,3) is displaced :-( */ | 57 | 2.69M | if (sys->height == 720 && !(buf[1] & 0x0C)) | 58 | | /* shifting the Y coordinate down by 72/2 macro blocks */ | 59 | 78.3k | *mb_y -= (*mb_y > 17) ? 18 : -72; | 60 | 2.69M | } |
|
61 | | |
62 | | #endif // AVCODEC_DV_INTERNAL_H |