~ubuntu-branches/ubuntu/vivid/libav/vivid

« back to all changes in this revision

Viewing changes to libavformat/nut.c

  • Committer: Package Import Robot
  • Author(s): Reinhard Tartler
  • Date: 2013-10-22 23:24:08 UTC
  • mfrom: (1.3.36 sid)
  • Revision ID: package-import@ubuntu.com-20131022232408-b8tvvn4pyzri9mi3
Tags: 6:9.10-1ubuntu1
* Build all -extra flavors from this source package, as libav got demoted
  from main to universe, cf LP: #1243235
* Simplify debian/rules to follow exactly the code that debian executes
* New upstream (LP: #1180288) fixes lots of security issues (LP: #1242802)
* Merge from unstable, remaining changes:
  - build-depend on libtiff5-dev rather than libtiff4-dev,
    avoids FTBFS caused by imlib
  - follow the regular debian codepaths

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
#include "libavutil/mathematics.h"
23
23
#include "libavutil/tree.h"
24
24
#include "nut.h"
 
25
#include "riff.h"
25
26
#include "internal.h"
26
27
 
27
28
const AVCodecTag ff_nut_subtitle_tags[] = {
28
 
    { CODEC_ID_TEXT        , MKTAG('U', 'T', 'F', '8') },
29
 
    { CODEC_ID_SSA         , MKTAG('S', 'S', 'A',  0 ) },
30
 
    { CODEC_ID_DVD_SUBTITLE, MKTAG('D', 'V', 'D', 'S') },
31
 
    { CODEC_ID_DVB_SUBTITLE, MKTAG('D', 'V', 'B', 'S') },
32
 
    { CODEC_ID_NONE        , 0                         }
 
29
    { AV_CODEC_ID_TEXT        , MKTAG('U', 'T', 'F', '8') },
 
30
    { AV_CODEC_ID_SSA         , MKTAG('S', 'S', 'A',  0 ) },
 
31
    { AV_CODEC_ID_DVD_SUBTITLE, MKTAG('D', 'V', 'D', 'S') },
 
32
    { AV_CODEC_ID_DVB_SUBTITLE, MKTAG('D', 'V', 'B', 'S') },
 
33
    { AV_CODEC_ID_NONE        , 0                         }
 
34
};
 
35
 
 
36
const AVCodecTag ff_nut_data_tags[] = {
 
37
    { AV_CODEC_ID_TEXT        , MKTAG('U', 'T', 'F', '8') },
 
38
    { AV_CODEC_ID_NONE        , 0                         }
33
39
};
34
40
 
35
41
const AVCodecTag ff_nut_video_tags[] = {
36
 
    { CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 15 ) },
37
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 15 ) },
38
 
    { CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 16 ) },
39
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 16 ) },
40
 
    { CODEC_ID_RAWVIDEO, MKTAG(15 , 'B', 'G', 'R') },
41
 
    { CODEC_ID_RAWVIDEO, MKTAG(15 , 'R', 'G', 'B') },
42
 
    { CODEC_ID_RAWVIDEO, MKTAG(16 , 'B', 'G', 'R') },
43
 
    { CODEC_ID_RAWVIDEO, MKTAG(16 , 'R', 'G', 'B') },
44
 
    { CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 12 ) },
45
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 12 ) },
46
 
    { CODEC_ID_RAWVIDEO, MKTAG(12 , 'B', 'G', 'R') },
47
 
    { CODEC_ID_RAWVIDEO, MKTAG(12 , 'R', 'G', 'B') },
48
 
    { CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 'A') },
49
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 'A') },
50
 
    { CODEC_ID_RAWVIDEO, MKTAG('A', 'B', 'G', 'R') },
51
 
    { CODEC_ID_RAWVIDEO, MKTAG('A', 'R', 'G', 'B') },
52
 
    { CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 24 ) },
53
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 24 ) },
54
 
    { CODEC_ID_RAWVIDEO, MKTAG('4', '1', '1', 'P') },
55
 
    { CODEC_ID_RAWVIDEO, MKTAG('4', '2', '2', 'P') },
56
 
    { CODEC_ID_RAWVIDEO, MKTAG('4', '2', '2', 'P') },
57
 
    { CODEC_ID_RAWVIDEO, MKTAG('4', '4', '0', 'P') },
58
 
    { CODEC_ID_RAWVIDEO, MKTAG('4', '4', '0', 'P') },
59
 
    { CODEC_ID_RAWVIDEO, MKTAG('4', '4', '4', 'P') },
60
 
    { CODEC_ID_RAWVIDEO, MKTAG('4', '4', '4', 'P') },
61
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', '1', 'W', '0') },
62
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', '0', 'W', '1') },
63
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R',  8 ) },
64
 
    { CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B',  8 ) },
65
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R',  4 ) },
66
 
    { CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B',  4 ) },
67
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', '4', 'B', 'Y') },
68
 
    { CODEC_ID_RAWVIDEO, MKTAG('R', '4', 'B', 'Y') },
69
 
    { CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 48 ) },
70
 
    { CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 48 ) },
71
 
    { CODEC_ID_RAWVIDEO, MKTAG(48 , 'B', 'G', 'R') },
72
 
    { CODEC_ID_RAWVIDEO, MKTAG(48 , 'R', 'G', 'B') },
73
 
    { CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 11 , 10 ) },
74
 
    { CODEC_ID_RAWVIDEO, MKTAG(10 , 11 , '3', 'Y') },
75
 
    { CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 10 , 10 ) },
76
 
    { CODEC_ID_RAWVIDEO, MKTAG(10 , 10 , '3', 'Y') },
77
 
    { CODEC_ID_RAWVIDEO, MKTAG('Y', '3',  0 , 10 ) },
78
 
    { CODEC_ID_RAWVIDEO, MKTAG(10 ,  0 , '3', 'Y') },
79
 
    { CODEC_ID_RAWVIDEO, MKTAG('Y', '1',  0 , 16 ) },
80
 
    { CODEC_ID_RAWVIDEO, MKTAG(16 ,  0 , '1', 'Y') },
81
 
    { CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 11 , 16 ) },
82
 
    { CODEC_ID_RAWVIDEO, MKTAG(16 , 11 , '3', 'Y') },
83
 
    { CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 10 , 16 ) },
84
 
    { CODEC_ID_RAWVIDEO, MKTAG(16 , 10 , '3', 'Y') },
85
 
    { CODEC_ID_RAWVIDEO, MKTAG('Y', '3',  0 , 16 ) },
86
 
    { CODEC_ID_RAWVIDEO, MKTAG(16 ,  0 , '3', 'Y') },
87
 
    { CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 11 ,  8 ) },
88
 
    { CODEC_ID_RAWVIDEO, MKTAG('Y', '2',  0 ,  8 ) },
89
 
    { CODEC_ID_NONE    , 0                         }
 
42
    { AV_CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 15 ) },
 
43
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 15 ) },
 
44
    { AV_CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 16 ) },
 
45
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 16 ) },
 
46
    { AV_CODEC_ID_RAWVIDEO, MKTAG(15 , 'B', 'G', 'R') },
 
47
    { AV_CODEC_ID_RAWVIDEO, MKTAG(15 , 'R', 'G', 'B') },
 
48
    { AV_CODEC_ID_RAWVIDEO, MKTAG(16 , 'B', 'G', 'R') },
 
49
    { AV_CODEC_ID_RAWVIDEO, MKTAG(16 , 'R', 'G', 'B') },
 
50
    { AV_CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 12 ) },
 
51
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 12 ) },
 
52
    { AV_CODEC_ID_RAWVIDEO, MKTAG(12 , 'B', 'G', 'R') },
 
53
    { AV_CODEC_ID_RAWVIDEO, MKTAG(12 , 'R', 'G', 'B') },
 
54
    { AV_CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 'A') },
 
55
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 'A') },
 
56
    { AV_CODEC_ID_RAWVIDEO, MKTAG('A', 'B', 'G', 'R') },
 
57
    { AV_CODEC_ID_RAWVIDEO, MKTAG('A', 'R', 'G', 'B') },
 
58
    { AV_CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 24 ) },
 
59
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 24 ) },
 
60
    { AV_CODEC_ID_RAWVIDEO, MKTAG('4', '1', '1', 'P') },
 
61
    { AV_CODEC_ID_RAWVIDEO, MKTAG('4', '2', '2', 'P') },
 
62
    { AV_CODEC_ID_RAWVIDEO, MKTAG('4', '2', '2', 'P') },
 
63
    { AV_CODEC_ID_RAWVIDEO, MKTAG('4', '4', '0', 'P') },
 
64
    { AV_CODEC_ID_RAWVIDEO, MKTAG('4', '4', '0', 'P') },
 
65
    { AV_CODEC_ID_RAWVIDEO, MKTAG('4', '4', '4', 'P') },
 
66
    { AV_CODEC_ID_RAWVIDEO, MKTAG('4', '4', '4', 'P') },
 
67
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', '1', 'W', '0') },
 
68
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', '0', 'W', '1') },
 
69
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R',  8 ) },
 
70
    { AV_CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B',  8 ) },
 
71
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R',  4 ) },
 
72
    { AV_CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B',  4 ) },
 
73
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', '4', 'B', 'Y') },
 
74
    { AV_CODEC_ID_RAWVIDEO, MKTAG('R', '4', 'B', 'Y') },
 
75
    { AV_CODEC_ID_RAWVIDEO, MKTAG('B', 'G', 'R', 48 ) },
 
76
    { AV_CODEC_ID_RAWVIDEO, MKTAG('R', 'G', 'B', 48 ) },
 
77
    { AV_CODEC_ID_RAWVIDEO, MKTAG(48 , 'B', 'G', 'R') },
 
78
    { AV_CODEC_ID_RAWVIDEO, MKTAG(48 , 'R', 'G', 'B') },
 
79
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 11 , 10 ) },
 
80
    { AV_CODEC_ID_RAWVIDEO, MKTAG(10 , 11 , '3', 'Y') },
 
81
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 10 , 10 ) },
 
82
    { AV_CODEC_ID_RAWVIDEO, MKTAG(10 , 10 , '3', 'Y') },
 
83
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '3',  0 , 10 ) },
 
84
    { AV_CODEC_ID_RAWVIDEO, MKTAG(10 ,  0 , '3', 'Y') },
 
85
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '1',  0 , 16 ) },
 
86
    { AV_CODEC_ID_RAWVIDEO, MKTAG(16 ,  0 , '1', 'Y') },
 
87
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 11 , 16 ) },
 
88
    { AV_CODEC_ID_RAWVIDEO, MKTAG(16 , 11 , '3', 'Y') },
 
89
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '3', 10 , 16 ) },
 
90
    { AV_CODEC_ID_RAWVIDEO, MKTAG(16 , 10 , '3', 'Y') },
 
91
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '3',  0 , 16 ) },
 
92
    { AV_CODEC_ID_RAWVIDEO, MKTAG(16 ,  0 , '3', 'Y') },
 
93
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 11 ,  8 ) },
 
94
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '2',  0 ,  8 ) },
 
95
 
 
96
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '1',  0 ,  9 ) },
 
97
    { AV_CODEC_ID_RAWVIDEO, MKTAG( 9 ,  0 , '1', 'Y') },
 
98
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 11 ,  9 ) },
 
99
    { AV_CODEC_ID_RAWVIDEO, MKTAG( 9 , 11 , '4', 'Y') },
 
100
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 10 ,  9 ) },
 
101
    { AV_CODEC_ID_RAWVIDEO, MKTAG( 9 , 10 , '4', 'Y') },
 
102
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4',  0 ,  9 ) },
 
103
    { AV_CODEC_ID_RAWVIDEO, MKTAG( 9 ,  0 , '4', 'Y') },
 
104
 
 
105
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '1',  0 , 10 ) },
 
106
    { AV_CODEC_ID_RAWVIDEO, MKTAG(10 ,  0 , '1', 'Y') },
 
107
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 11 , 10 ) },
 
108
    { AV_CODEC_ID_RAWVIDEO, MKTAG(10 , 11 , '4', 'Y') },
 
109
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 10 , 10 ) },
 
110
    { AV_CODEC_ID_RAWVIDEO, MKTAG(10 , 10 , '4', 'Y') },
 
111
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4',  0 , 10 ) },
 
112
    { AV_CODEC_ID_RAWVIDEO, MKTAG(10 ,  0 , '4', 'Y') },
 
113
 
 
114
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '1',  0 , 16 ) },
 
115
    { AV_CODEC_ID_RAWVIDEO, MKTAG(16 ,  0 , '1', 'Y') },
 
116
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 11 , 16 ) },
 
117
    { AV_CODEC_ID_RAWVIDEO, MKTAG(16 , 11 , '4', 'Y') },
 
118
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', 10 , 16 ) },
 
119
    { AV_CODEC_ID_RAWVIDEO, MKTAG(16 , 10 , '4', 'Y') },
 
120
    { AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4',  0 , 16 ) },
 
121
    { AV_CODEC_ID_RAWVIDEO, MKTAG(16 ,  0 , '4', 'Y') },
 
122
 
 
123
    { AV_CODEC_ID_NONE    , 0                         }
 
124
};
 
125
 
 
126
const AVCodecTag ff_nut_audio_tags[] = {
 
127
    { AV_CODEC_ID_PCM_ALAW,         MKTAG('A', 'L', 'A', 'W') },
 
128
    { AV_CODEC_ID_PCM_MULAW,        MKTAG('U', 'L', 'A', 'W') },
 
129
    { AV_CODEC_ID_PCM_F32BE,        MKTAG(32 , 'D', 'F', 'P') },
 
130
    { AV_CODEC_ID_PCM_F32LE,        MKTAG('P', 'F', 'D', 32 ) },
 
131
    { AV_CODEC_ID_PCM_F64BE,        MKTAG(64 , 'D', 'F', 'P') },
 
132
    { AV_CODEC_ID_PCM_F64LE,        MKTAG('P', 'F', 'D', 64 ) },
 
133
    { AV_CODEC_ID_PCM_S16BE,        MKTAG(16 , 'D', 'S', 'P') },
 
134
    { AV_CODEC_ID_PCM_S16LE,        MKTAG('P', 'S', 'D', 16 ) },
 
135
    { AV_CODEC_ID_PCM_S24BE,        MKTAG(24 , 'D', 'S', 'P') },
 
136
    { AV_CODEC_ID_PCM_S24LE,        MKTAG('P', 'S', 'D', 24 ) },
 
137
    { AV_CODEC_ID_PCM_S32BE,        MKTAG(32 , 'D', 'S', 'P') },
 
138
    { AV_CODEC_ID_PCM_S32LE,        MKTAG('P', 'S', 'D', 32 ) },
 
139
    { AV_CODEC_ID_PCM_S8,           MKTAG('P', 'S', 'D',  8 ) },
 
140
    { AV_CODEC_ID_PCM_U16BE,        MKTAG(16 , 'D', 'U', 'P') },
 
141
    { AV_CODEC_ID_PCM_U16LE,        MKTAG('P', 'U', 'D', 16 ) },
 
142
    { AV_CODEC_ID_PCM_U24BE,        MKTAG(24 , 'D', 'U', 'P') },
 
143
    { AV_CODEC_ID_PCM_U24LE,        MKTAG('P', 'U', 'D', 24 ) },
 
144
    { AV_CODEC_ID_PCM_U32BE,        MKTAG(32 , 'D', 'U', 'P') },
 
145
    { AV_CODEC_ID_PCM_U32LE,        MKTAG('P', 'U', 'D', 32 ) },
 
146
    { AV_CODEC_ID_PCM_U8,           MKTAG('P', 'U', 'D',  8 ) },
 
147
    { AV_CODEC_ID_PCM_S16LE_PLANAR, MKTAG('P', 'S', 'P', 16 ) },
 
148
    { AV_CODEC_ID_MP3,              MKTAG('M', 'P', '3', ' ') },
 
149
    { AV_CODEC_ID_NONE,             0                         }
 
150
};
 
151
 
 
152
const AVCodecTag * const ff_nut_codec_tags[] = {
 
153
    ff_nut_video_tags, ff_nut_audio_tags, ff_nut_subtitle_tags,
 
154
    ff_codec_bmp_tags, ff_codec_wav_tags, ff_nut_data_tags, 0
90
155
};
91
156
 
92
157
void ff_nut_reset_ts(NUTContext *nut, AVRational time_base, int64_t val){
116
181
 
117
182
void ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts){
118
183
    Syncpoint *sp= av_mallocz(sizeof(Syncpoint));
119
 
    struct AVTreeNode *node= av_mallocz(av_tree_node_size);
 
184
    struct AVTreeNode *node = av_tree_node_alloc();
120
185
 
121
186
    sp->pos= pos;
122
187
    sp->back_ptr= back_ptr;