annotate libschroedinger.c @ 7042:74c1f1881d1a libavcodec

-0x8000 == 0x8000 with int16 fixes segfault / issue491
author michael
date Fri, 13 Jun 2008 19:30:27 +0000
parents bdacae101076
children e9d9d946f213
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6738
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
1 /*
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
2 * Copyright (c) 2008 BBC, Anuradha Suraparaju <asuraparaju at gmail dot com >
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
3 *
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
4 * This file is part of FFmpeg.
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
5 *
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
10 *
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
14 * Lesser General Public License for more details.
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
15 *
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
19 */
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
20
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
21 /**
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
22 * @file libschroedinger.c
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
23 * function definitions common to libschroedingerdec.c and libschroedingerenc.c
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
24 */
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
25
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
26 #include "libdirac_libschro.h"
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
27 #include "libschroedinger.h"
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
28
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
29 /**
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
30 * Schroedinger video preset table. Ensure that this tables matches up correctly
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
31 * with the ff_dirac_schro_video_format_info table in libdirac_libschro.c.
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
32 */
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
33 static const SchroVideoFormatEnum ff_schro_video_formats[]={
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
34 SCHRO_VIDEO_FORMAT_CUSTOM ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
35 SCHRO_VIDEO_FORMAT_QSIF ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
36 SCHRO_VIDEO_FORMAT_QCIF ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
37 SCHRO_VIDEO_FORMAT_SIF ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
38 SCHRO_VIDEO_FORMAT_CIF ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
39 SCHRO_VIDEO_FORMAT_4SIF ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
40 SCHRO_VIDEO_FORMAT_4CIF ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
41 SCHRO_VIDEO_FORMAT_SD480I_60 ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
42 SCHRO_VIDEO_FORMAT_SD576I_50 ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
43 SCHRO_VIDEO_FORMAT_HD720P_60 ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
44 SCHRO_VIDEO_FORMAT_HD720P_50 ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
45 SCHRO_VIDEO_FORMAT_HD1080I_60 ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
46 SCHRO_VIDEO_FORMAT_HD1080I_50 ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
47 SCHRO_VIDEO_FORMAT_HD1080P_60 ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
48 SCHRO_VIDEO_FORMAT_HD1080P_50 ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
49 SCHRO_VIDEO_FORMAT_DC2K_24 ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
50 SCHRO_VIDEO_FORMAT_DC4K_24 ,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
51 };
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
52
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
53 SchroVideoFormatEnum ff_get_schro_video_format_preset(AVCodecContext *avccontext)
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
54 {
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
55 unsigned int num_formats = sizeof(ff_schro_video_formats) /
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
56 sizeof(ff_schro_video_formats[0]);
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
57
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
58 unsigned int idx = ff_dirac_schro_get_video_format_idx (avccontext);
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
59
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
60 return (idx < num_formats) ?
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
61 ff_schro_video_formats[idx] : SCHRO_VIDEO_FORMAT_CUSTOM;
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
62 }
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
63
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
64 int ff_get_schro_frame_format (SchroChromaFormat schro_pix_fmt,
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
65 SchroFrameFormat *schro_frame_fmt)
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
66 {
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
67 unsigned int num_formats = sizeof(ffmpeg_schro_pixel_format_map) /
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
68 sizeof(ffmpeg_schro_pixel_format_map[0]);
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
69
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
70 int idx;
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
71
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
72 for (idx = 0; idx < num_formats; ++idx) {
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
73 if (ffmpeg_schro_pixel_format_map[idx].schro_pix_fmt == schro_pix_fmt) {
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
74 *schro_frame_fmt =
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
75 ffmpeg_schro_pixel_format_map[idx].schro_frame_fmt;
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
76 return 0;
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
77 }
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
78 }
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
79 return -1;
bdacae101076 Add Dirac support through libschroedinger.
diego
parents:
diff changeset
80 }