Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
2692067a
Commit
2692067a
authored
May 26, 2005
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
AVPacket.pos
Originally committed as revision 4314 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
4aa606ec
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
88 additions
and
132 deletions
+88
-132
4xm.c
libavformat/4xm.c
+4
-6
amr.c
libavformat/amr.c
+2
-1
asf.c
libavformat/asf.c
+1
-0
au.c
libavformat/au.c
+2
-4
avformat.h
libavformat/avformat.h
+7
-6
avidec.c
libavformat/avidec.c
+1
-2
electronicarts.c
libavformat/electronicarts.c
+2
-6
ffm.c
libavformat/ffm.c
+1
-0
flic.c
libavformat/flic.c
+1
-0
flvdec.c
libavformat/flvdec.c
+1
-5
idcin.c
libavformat/idcin.c
+5
-9
idroq.c
libavformat/idroq.c
+3
-4
ipmovie.c
libavformat/ipmovie.c
+3
-7
matroska.c
libavformat/matroska.c
+2
-0
mov.c
libavformat/mov.c
+1
-16
mp3.c
libavformat/mp3.c
+1
-4
mpegts.c
libavformat/mpegts.c
+1
-0
nsvdec.c
libavformat/nsvdec.c
+2
-5
nut.c
libavformat/nut.c
+1
-2
psxstr.c
libavformat/psxstr.c
+1
-0
raw.c
libavformat/raw.c
+5
-15
rm.c
libavformat/rm.c
+2
-5
segafilm.c
libavformat/segafilm.c
+3
-3
sierravmd.c
libavformat/sierravmd.c
+1
-0
sol.c
libavformat/sol.c
+1
-5
swf.c
libavformat/swf.c
+2
-4
utils.c
libavformat/utils.c
+25
-0
wc3movie.c
libavformat/wc3movie.c
+2
-6
westwood.c
libavformat/westwood.c
+3
-9
yuv4mpeg.c
libavformat/yuv4mpeg.c
+2
-8
No files found.
libavformat/4xm.c
View file @
2692067a
...
...
@@ -277,6 +277,7 @@ static int fourxm_read_packet(AVFormatContext *s,
return
AVERROR_IO
;
pkt
->
stream_index
=
fourxm
->
video_stream_index
;
pkt
->
pts
=
fourxm
->
video_pts
;
pkt
->
pos
=
url_ftell
(
&
s
->
pb
);
memcpy
(
pkt
->
data
,
header
,
8
);
ret
=
get_buffer
(
&
s
->
pb
,
&
pkt
->
data
[
8
],
size
);
...
...
@@ -293,16 +294,13 @@ static int fourxm_read_packet(AVFormatContext *s,
size
-=
8
;
if
(
track_number
==
fourxm
->
selected_track
)
{
if
(
av_new_packet
(
pkt
,
size
))
ret
=
av_get_packet
(
&
s
->
pb
,
pkt
,
size
);
if
(
ret
<
0
)
return
AVERROR_IO
;
pkt
->
stream_index
=
fourxm
->
tracks
[
fourxm
->
selected_track
].
stream_index
;
pkt
->
pts
=
fourxm
->
audio_pts
;
ret
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
,
size
);
if
(
ret
<
0
)
av_free_packet
(
pkt
);
else
packet_read
=
1
;
packet_read
=
1
;
/* pts accounting */
audio_frame_count
=
size
;
...
...
libavformat/amr.c
View file @
2692067a
...
...
@@ -154,7 +154,7 @@ static int amr_read_packet(AVFormatContext *s,
return
AVERROR_IO
;
}
pkt
->
stream_index
=
0
;
pkt
->
pos
=
url_ftell
(
&
s
->
pb
);
pkt
->
data
[
0
]
=
toc
;
read
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
+
1
,
size
);
...
...
@@ -189,6 +189,7 @@ static int amr_read_packet(AVFormatContext *s,
}
pkt
->
stream_index
=
0
;
pkt
->
pos
=
url_ftell
(
&
s
->
pb
);
pkt
->
data
[
0
]
=
toc
;
read
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
+
1
,
size
-
1
);
...
...
libavformat/asf.c
View file @
2692067a
...
...
@@ -604,6 +604,7 @@ static int asf_read_packet(AVFormatContext *s, AVPacket *pkt)
asf_st
->
seq
=
asf
->
packet_seq
;
asf_st
->
pkt
.
pts
=
asf
->
packet_frag_timestamp
;
asf_st
->
pkt
.
stream_index
=
asf
->
stream_index
;
asf_st
->
pkt
.
pos
=
asf_st
->
packet_pos
=
asf
->
packet_pos
;
//printf("new packet: stream:%d key:%d packet_key:%d audio:%d size:%d\n",
//asf->stream_index, asf->packet_key_frame, asf_st->pkt.flags & PKT_FLAG_KEY,
...
...
libavformat/au.c
View file @
2692067a
...
...
@@ -161,13 +161,11 @@ static int au_read_packet(AVFormatContext *s,
if
(
url_feof
(
&
s
->
pb
))
return
AVERROR_IO
;
if
(
av_new_packet
(
pkt
,
MAX_SIZE
))
ret
=
av_get_packet
(
&
s
->
pb
,
pkt
,
MAX_SIZE
);
if
(
ret
<
0
)
return
AVERROR_IO
;
pkt
->
stream_index
=
0
;
ret
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
,
pkt
->
size
);
if
(
ret
<
0
)
av_free_packet
(
pkt
);
/* note: we need to modify the packet size here to handle the last
packet */
pkt
->
size
=
ret
;
...
...
libavformat/avformat.h
View file @
2692067a
...
...
@@ -5,7 +5,7 @@
extern
"C"
{
#endif
#define LIBAVFORMAT_BUILD 462
4
#define LIBAVFORMAT_BUILD 462
5
#define LIBAVFORMAT_VERSION_INT FFMPEG_VERSION_INT
#define LIBAVFORMAT_VERSION FFMPEG_VERSION
...
...
@@ -28,17 +28,16 @@ extern "C" {
#endif
typedef
struct
AVPacket
{
int64_t
pts
;
/* presentation time stamp in AV_TIME_BASE units (or
pts_den units in muxers or demuxers) */
int64_t
dts
;
/* decompression time stamp in AV_TIME_BASE units (or
pts_den units in muxers or demuxers) */
int64_t
pts
;
///< presentation time stamp in time_base units
int64_t
dts
;
///< decompression time stamp in time_base units
uint8_t
*
data
;
int
size
;
int
stream_index
;
int
flags
;
int
duration
;
/* presentation duration (0 if not available) */
int
duration
;
///< presentation duration in time_base units (0 if not available)
void
(
*
destruct
)(
struct
AVPacket
*
);
void
*
priv
;
int64_t
pos
;
///< byte position in stream, -1 if unknown
}
AVPacket
;
#define PKT_FLAG_KEY 0x0001
...
...
@@ -49,6 +48,7 @@ static inline void av_init_packet(AVPacket *pkt)
{
pkt
->
pts
=
AV_NOPTS_VALUE
;
pkt
->
dts
=
AV_NOPTS_VALUE
;
pkt
->
pos
=
-
1
;
pkt
->
duration
=
0
;
pkt
->
flags
=
0
;
pkt
->
stream_index
=
0
;
...
...
@@ -56,6 +56,7 @@ static inline void av_init_packet(AVPacket *pkt)
}
int
av_new_packet
(
AVPacket
*
pkt
,
int
size
);
int
av_get_packet
(
ByteIOContext
*
s
,
AVPacket
*
pkt
,
int
size
);
int
av_dup_packet
(
AVPacket
*
pkt
);
/**
...
...
libavformat/avidec.c
View file @
2692067a
...
...
@@ -423,8 +423,7 @@ resync:
if
(
size
>
ast
->
remaining
)
size
=
ast
->
remaining
;
av_new_packet
(
pkt
,
size
);
get_buffer
(
pb
,
pkt
->
data
,
size
);
av_get_packet
(
pb
,
pkt
,
size
);
if
(
avi
->
dv_demux
)
{
dstr
=
pkt
->
destruct
;
...
...
libavformat/electronicarts.c
View file @
2692067a
...
...
@@ -234,13 +234,10 @@ static int ea_read_packet(AVFormatContext *s,
switch
(
chunk_type
)
{
/* audio data */
case
SCDl_TAG
:
if
(
av_new_packet
(
pkt
,
chunk_size
))
ret
=
av_get_packet
(
pb
,
pkt
,
chunk_size
);
if
(
ret
!=
chunk_size
)
ret
=
AVERROR_IO
;
else
{
ret
=
get_buffer
(
pb
,
pkt
->
data
,
chunk_size
);
if
(
ret
!=
chunk_size
)
ret
=
AVERROR_IO
;
else
{
pkt
->
stream_index
=
ea
->
audio_stream_index
;
pkt
->
pts
=
90000
;
pkt
->
pts
*=
ea
->
audio_frame_counter
;
...
...
@@ -250,7 +247,6 @@ static int ea_read_packet(AVFormatContext *s,
* on stereo; chunk also has 12-byte header */
ea
->
audio_frame_counter
+=
((
chunk_size
-
12
)
*
2
)
/
ea
->
num_channels
;
}
}
packet_read
=
1
;
...
...
libavformat/ffm.c
View file @
2692067a
...
...
@@ -603,6 +603,7 @@ static int ffm_read_packet(AVFormatContext *s, AVPacket *pkt)
av_new_packet
(
pkt
,
size
);
pkt
->
stream_index
=
ffm
->
header
[
0
];
pkt
->
pos
=
url_ftell
(
&
s
->
pb
);
if
(
ffm
->
header
[
1
]
&
FLAG_KEY_FRAME
)
pkt
->
flags
|=
PKT_FLAG_KEY
;
...
...
libavformat/flic.c
View file @
2692067a
...
...
@@ -178,6 +178,7 @@ static int flic_read_packet(AVFormatContext *s,
}
pkt
->
stream_index
=
flic
->
video_stream_index
;
pkt
->
pts
=
flic
->
pts
;
pkt
->
pos
=
url_ftell
(
pb
);
memcpy
(
pkt
->
data
,
preamble
,
FLIC_PREAMBLE_SIZE
);
ret
=
get_buffer
(
pb
,
pkt
->
data
+
FLIC_PREAMBLE_SIZE
,
size
-
FLIC_PREAMBLE_SIZE
);
...
...
libavformat/flvdec.c
View file @
2692067a
...
...
@@ -147,12 +147,8 @@ static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
}
}
if
(
av_new_packet
(
pkt
,
size
)
<
0
)
return
AVERROR_IO
;
ret
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
,
size
);
ret
=
av_get_packet
(
&
s
->
pb
,
pkt
,
size
);
if
(
ret
<=
0
)
{
av_free_packet
(
pkt
);
return
AVERROR_IO
;
}
/* note: we need to modify the packet size here to handle the last
...
...
libavformat/idcin.c
View file @
2692067a
...
...
@@ -255,26 +255,22 @@ static int idcin_read_packet(AVFormatContext *s,
/* skip the number of decoded bytes (always equal to width * height) */
url_fseek
(
pb
,
4
,
SEEK_CUR
);
chunk_size
-=
4
;
if
(
av_new_packet
(
pkt
,
chunk_size
))
ret
=
AVERROR_IO
;
ret
=
av_get_packet
(
pb
,
pkt
,
chunk_size
);
if
(
ret
!=
chunk_size
)
return
AVERROR_IO
;
pkt
->
stream_index
=
idcin
->
video_stream_index
;
pkt
->
pts
=
idcin
->
pts
;
ret
=
get_buffer
(
pb
,
pkt
->
data
,
chunk_size
);
if
(
ret
!=
chunk_size
)
ret
=
AVERROR_IO
;
}
else
{
/* send out the audio chunk */
if
(
idcin
->
current_audio_chunk
)
chunk_size
=
idcin
->
audio_chunk_size2
;
else
chunk_size
=
idcin
->
audio_chunk_size1
;
if
(
av_new_packet
(
pkt
,
chunk_size
))
ret
=
av_get_packet
(
pb
,
pkt
,
chunk_size
);
if
(
ret
!=
chunk_size
)
return
AVERROR_IO
;
pkt
->
stream_index
=
idcin
->
audio_stream_index
;
pkt
->
pts
=
idcin
->
pts
;
ret
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
,
chunk_size
);
if
(
ret
!=
chunk_size
)
ret
=
AVERROR_IO
;
idcin
->
current_audio_chunk
^=
1
;
idcin
->
pts
+=
FRAME_PTS_INC
;
...
...
libavformat/idroq.c
View file @
2692067a
...
...
@@ -221,13 +221,11 @@ static int roq_read_packet(AVFormatContext *s,
url_fseek
(
pb
,
codebook_offset
,
SEEK_SET
);
/* load up the packet */
if
(
av_new_packet
(
pkt
,
chunk_size
))
ret
=
av_get_packet
(
pb
,
pkt
,
chunk_size
);
if
(
ret
!=
chunk_size
)
return
AVERROR_IO
;
pkt
->
stream_index
=
roq
->
video_stream_index
;
pkt
->
pts
=
roq
->
video_pts
;
ret
=
get_buffer
(
pb
,
pkt
->
data
,
chunk_size
);
if
(
ret
!=
chunk_size
)
ret
=
AVERROR_IO
;
roq
->
video_pts
+=
roq
->
frame_pts_inc
;
packet_read
=
1
;
...
...
@@ -254,6 +252,7 @@ static int roq_read_packet(AVFormatContext *s,
roq
->
audio_frame_count
+=
(
chunk_size
/
roq
->
audio_channels
);
}
pkt
->
pos
=
url_ftell
(
pb
);
ret
=
get_buffer
(
pb
,
pkt
->
data
+
RoQ_CHUNK_PREAMBLE_SIZE
,
chunk_size
);
if
(
ret
!=
chunk_size
)
...
...
libavformat/ipmovie.c
View file @
2692067a
...
...
@@ -140,16 +140,11 @@ static int load_ipmovie_packet(IPMVEContext *s, ByteIOContext *pb,
audio_pts
*=
s
->
audio_frame_count
;
audio_pts
/=
s
->
audio_sample_rate
;
if
(
av_new_packet
(
pkt
,
s
->
audio_chunk_size
))
return
CHUNK_
NOMEM
;
if
(
s
->
audio_chunk_size
!=
av_get_packet
(
pb
,
pkt
,
s
->
audio_chunk_size
))
return
CHUNK_
EOF
;
pkt
->
stream_index
=
s
->
audio_stream_index
;
pkt
->
pts
=
audio_pts
;
if
(
get_buffer
(
pb
,
pkt
->
data
,
s
->
audio_chunk_size
)
!=
s
->
audio_chunk_size
)
{
av_free_packet
(
pkt
);
return
CHUNK_EOF
;
}
/* audio frame maintenance */
if
(
s
->
audio_type
!=
CODEC_ID_INTERPLAY_DPCM
)
...
...
@@ -171,6 +166,7 @@ static int load_ipmovie_packet(IPMVEContext *s, ByteIOContext *pb,
if
(
av_new_packet
(
pkt
,
s
->
decode_map_chunk_size
+
s
->
video_chunk_size
))
return
CHUNK_NOMEM
;
pkt
->
pos
=
s
->
decode_map_chunk_offset
;
url_fseek
(
pb
,
s
->
decode_map_chunk_offset
,
SEEK_SET
);
s
->
decode_map_chunk_offset
=
0
;
...
...
libavformat/matroska.c
View file @
2692067a
...
...
@@ -2366,6 +2366,7 @@ matroska_parse_blockgroup (MatroskaDemuxContext *matroska,
uint32_t
*
lace_size
=
NULL
;
int
n
,
track
,
flags
,
laces
=
0
;
uint64_t
num
;
int64_t
pos
=
url_ftell
(
&
matroska
->
ctx
->
pb
);
if
((
res
=
ebml_read_binary
(
matroska
,
&
id
,
&
data
,
&
size
))
<
0
)
break
;
...
...
@@ -2507,6 +2508,7 @@ matroska_parse_blockgroup (MatroskaDemuxContext *matroska,
matroska
->
tracks
[
track
]
->
stream_index
;
pkt
->
pts
=
timecode
/
1000000
;
/* ns to ms */
pkt
->
pos
=
pos
;
matroska_queue_packet
(
matroska
,
pkt
);
}
...
...
libavformat/mov.c
View file @
2692067a
...
...
@@ -253,9 +253,6 @@ typedef struct MOVStreamContext {
int
time_scale
;
long
current_sample
;
long
left_in_chunk
;
/* how many samples before next chunk */
/* specific MPEG4 header which is added at the beginning of the stream */
unsigned
int
header_len
;
uint8_t
*
header_data
;
MOV_esds_t
esds
;
}
MOVStreamContext
;
...
...
@@ -1672,7 +1669,6 @@ static void mov_free_stream_context(MOVStreamContext *sc)
av_freep
(
&
sc
->
sample_to_chunk
);
av_freep
(
&
sc
->
sample_sizes
);
av_freep
(
&
sc
->
keyframes
);
av_freep
(
&
sc
->
header_data
);
av_freep
(
&
sc
->
stts_data
);
av_freep
(
&
sc
->
ctts_data
);
av_freep
(
&
sc
);
...
...
@@ -1974,18 +1970,7 @@ readchunk:
return
-
1
;
url_fseek
(
&
s
->
pb
,
offset
,
SEEK_SET
);
//av_log(NULL, AV_LOG_DEBUG, "READCHUNK hlen: %d %d off: %Ld pos:%Ld\n", size, sc->header_len, offset, url_ftell(&s->pb));
if
(
sc
->
header_len
>
0
)
{
av_new_packet
(
pkt
,
size
+
sc
->
header_len
);
memcpy
(
pkt
->
data
,
sc
->
header_data
,
sc
->
header_len
);
get_buffer
(
&
s
->
pb
,
pkt
->
data
+
sc
->
header_len
,
size
);
/* free header */
av_freep
(
&
sc
->
header_data
);
sc
->
header_len
=
0
;
}
else
{
av_new_packet
(
pkt
,
size
);
get_buffer
(
&
s
->
pb
,
pkt
->
data
,
pkt
->
size
);
}
av_get_packet
(
&
s
->
pb
,
pkt
,
size
);
pkt
->
stream_index
=
sc
->
ffindex
;
// If the keyframes table exists, mark any samples that are in the table as key frames.
...
...
libavformat/mp3.c
View file @
2692067a
...
...
@@ -297,13 +297,10 @@ static int mp3_read_packet(AVFormatContext *s, AVPacket *pkt)
size
=
MP3_PACKET_SIZE
;
if
(
av_new_packet
(
pkt
,
size
)
<
0
)
return
AVERROR_IO
;
ret
=
av_get_packet
(
&
s
->
pb
,
pkt
,
size
);
pkt
->
stream_index
=
0
;
ret
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
,
size
);
if
(
ret
<=
0
)
{
av_free_packet
(
pkt
);
return
AVERROR_IO
;
}
/* note: we need to modify the packet size here to handle the last
...
...
libavformat/mpegts.c
View file @
2692067a
...
...
@@ -1234,6 +1234,7 @@ static int mpegts_raw_read_packet(AVFormatContext *s,
if
(
av_new_packet
(
pkt
,
TS_PACKET_SIZE
)
<
0
)
return
-
ENOMEM
;
pkt
->
pos
=
url_ftell
(
&
s
->
pb
);
ret
=
read_packet
(
&
s
->
pb
,
pkt
->
data
,
ts
->
raw_packet_size
);
if
(
ret
<
0
)
{
av_free_packet
(
pkt
);
...
...
libavformat/nsvdec.c
View file @
2692067a
...
...
@@ -592,8 +592,7 @@ null_chunk_retry:
if
(
vsize
/* && st[NSV_ST_VIDEO]*/
)
{
nst
=
st
[
NSV_ST_VIDEO
]
->
priv_data
;
pkt
=
&
nsv
->
ahead
[
NSV_ST_VIDEO
];
av_new_packet
(
pkt
,
vsize
);
get_buffer
(
pb
,
pkt
->
data
,
vsize
);
av_get_packet
(
pb
,
pkt
,
vsize
);
pkt
->
stream_index
=
st
[
NSV_ST_VIDEO
]
->
index
;
//NSV_ST_VIDEO;
pkt
->
dts
=
nst
->
frame_offset
++
;
pkt
->
flags
|=
PKT_FLAG_KEY
;
/* stupid format has no way to tell XXX: try the index */
...
...
@@ -633,9 +632,7 @@ null_chunk_retry:
PRINT
((
"NSV RAWAUDIO: bps %d, nchan %d, srate %ld
\n
"
,
bps
,
channels
,
samplerate
));
}
}
av_new_packet
(
pkt
,
asize
);
if
(
asize
)
get_buffer
(
pb
,
pkt
->
data
,
asize
);
av_get_packet
(
pb
,
pkt
,
asize
);
pkt
->
stream_index
=
st
[
NSV_ST_AUDIO
]
->
index
;
//NSV_ST_AUDIO;
//pkt->dts = nst->frame_offset;
//if (nst->sample_size)
...
...
libavformat/nut.c
View file @
2692067a
...
...
@@ -1236,8 +1236,7 @@ static int decode_frame(NUTContext *nut, AVPacket *pkt, int frame_code, int fram
return
1
;
}
av_new_packet
(
pkt
,
size
);
get_buffer
(
bc
,
pkt
->
data
,
size
);
av_get_packet
(
bc
,
pkt
,
size
);
pkt
->
stream_index
=
stream_id
;
if
(
key_frame
)
pkt
->
flags
|=
PKT_FLAG_KEY
;
...
...
libavformat/psxstr.c
View file @
2692067a
...
...
@@ -283,6 +283,7 @@ static int str_read_packet(AVFormatContext *s,
if
(
av_new_packet
(
pkt
,
frame_size
))
return
AVERROR_IO
;
pkt
->
pos
=
url_ftell
(
pb
)
-
RAW_CD_SECTOR_SIZE
;
pkt
->
stream_index
=
str
->
channels
[
channel
].
video_stream_index
;
// pkt->pts = str->pts;
...
...
libavformat/raw.c
View file @
2692067a
...
...
@@ -88,13 +88,10 @@ static int raw_read_packet(AVFormatContext *s, AVPacket *pkt)
size
=
RAW_PACKET_SIZE
;
if
(
av_new_packet
(
pkt
,
size
)
<
0
)
return
AVERROR_IO
;
ret
=
av_get_packet
(
&
s
->
pb
,
pkt
,
size
);
pkt
->
stream_index
=
0
;
ret
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
,
size
);
if
(
ret
<=
0
)
{
av_free_packet
(
pkt
);
return
AVERROR_IO
;
}
/* note: we need to modify the packet size here to handle the last
...
...
@@ -111,7 +108,8 @@ static int raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt)
if
(
av_new_packet
(
pkt
,
size
)
<
0
)
return
AVERROR_IO
;
pkt
->
pos
=
url_ftell
(
&
s
->
pb
);
pkt
->
stream_index
=
0
;
ret
=
get_partial_buffer
(
&
s
->
pb
,
pkt
->
data
,
size
);
if
(
ret
<=
0
)
{
...
...
@@ -618,18 +616,10 @@ static int rawvideo_read_packet(AVFormatContext *s, AVPacket *pkt)
if
(
packet_size
<
0
)
return
-
1
;
if
(
av_new_packet
(
pkt
,
packet_size
)
<
0
)
return
AVERROR_IO
;
ret
=
av_get_packet
(
&
s
->
pb
,
pkt
,
packet_size
);
pkt
->
stream_index
=
0
;
#if 0
/* bypass buffered I/O */
ret = url_read(url_fileno(&s->pb), pkt->data, pkt->size);
#else
ret
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
,
pkt
->
size
);
#endif
if
(
ret
!=
pkt
->
size
)
{
av_free_packet
(
pkt
);
if
(
ret
!=
packet_size
)
{
return
AVERROR_IO
;
}
else
{
return
0
;
...
...
libavformat/rm.c
View file @
2692067a
...
...
@@ -812,11 +812,9 @@ static int rm_read_packet(AVFormatContext *s, AVPacket *pkt)
if
(
rm
->
old_format
)
{
/* just read raw bytes */
len
=
RAW_PACKET_SIZE
;
av_new_packet
(
pkt
,
len
);
len
=
av_get_packet
(
pb
,
pkt
,
len
);
pkt
->
stream_index
=
0
;
len
=
get_buffer
(
pb
,
pkt
->
data
,
len
);
if
(
len
<=
0
)
{
av_free_packet
(
pkt
);
return
AVERROR_IO
;
}
pkt
->
size
=
len
;
...
...
@@ -860,9 +858,8 @@ resync:
goto
resync
;
}
av_
new_packet
(
pkt
,
len
);
av_
get_packet
(
pb
,
pkt
,
len
);
pkt
->
stream_index
=
i
;
get_buffer
(
pb
,
pkt
->
data
,
len
);
#if 0
if (st->codec.codec_type == CODEC_TYPE_VIDEO) {
...
...
libavformat/segafilm.c
View file @
2692067a
...
...
@@ -233,6 +233,7 @@ static int film_read_packet(AVFormatContext *s,
return
AVERROR_NOMEM
;
if
(
pkt
->
size
<
10
)
return
-
1
;
pkt
->
pos
=
url_ftell
(
pb
);
ret
=
get_buffer
(
pb
,
pkt
->
data
,
10
);
/* skip the non-spec CVID bytes */
url_fseek
(
pb
,
film
->
cvid_extra_bytes
,
SEEK_CUR
);
...
...
@@ -254,6 +255,7 @@ static int film_read_packet(AVFormatContext *s,
film
->
stereo_buffer
=
av_malloc
(
film
->
stereo_buffer_size
);
}
pkt
->
pos
=
url_ftell
(
pb
);
ret
=
get_buffer
(
pb
,
film
->
stereo_buffer
,
sample
->
sample_size
);
if
(
ret
!=
sample
->
sample_size
)
ret
=
AVERROR_IO
;
...
...
@@ -272,9 +274,7 @@ static int film_read_packet(AVFormatContext *s,
}
}
}
else
{
if
(
av_new_packet
(
pkt
,
sample
->
sample_size
))
return
AVERROR_NOMEM
;
ret
=
get_buffer
(
pb
,
pkt
->
data
,
sample
->
sample_size
);
ret
=
av_get_packet
(
pb
,
pkt
,
sample
->
sample_size
);
if
(
ret
!=
sample
->
sample_size
)
ret
=
AVERROR_IO
;
}
...
...
libavformat/sierravmd.c
View file @
2692067a
...
...
@@ -269,6 +269,7 @@ static int vmd_read_packet(AVFormatContext *s,
if
(
av_new_packet
(
pkt
,
frame
->
frame_size
+
BYTES_PER_FRAME_RECORD
))
return
AVERROR_NOMEM
;
pkt
->
pos
=
url_ftell
(
pb
);
memcpy
(
pkt
->
data
,
frame
->
frame_record
,
BYTES_PER_FRAME_RECORD
);
ret
=
get_buffer
(
pb
,
pkt
->
data
+
BYTES_PER_FRAME_RECORD
,
frame
->
frame_size
);
...
...
libavformat/sol.c
View file @
2692067a
...
...
@@ -131,13 +131,9 @@ static int sol_read_packet(AVFormatContext *s,
if
(
url_feof
(
&
s
->
pb
))
return
-
EIO
;
if
(
av_new_packet
(
pkt
,
MAX_SIZE
))
return
-
EIO
;
ret
=
av_get_packet
(
&
s
->
pb
,
pkt
,
MAX_SIZE
);
pkt
->
stream_index
=
0
;
ret
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
,
pkt
->
size
);
if
(
ret
<
0
)
av_free_packet
(
pkt
);
/* note: we need to modify the packet size here to handle the last
packet */
pkt
->
size
=
ret
;
...
...
libavformat/swf.c
View file @
2692067a
...
...
@@ -858,10 +858,9 @@ static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
if
(
st
->
id
==
0
)
{
if
(
get_le16
(
pb
)
==
swf
->
ch_id
)
{
frame
=
get_le16
(
pb
);
av_
new_packet
(
pkt
,
len
-
4
);
av_
get_packet
(
pb
,
pkt
,
len
-
4
);
pkt
->
pts
=
frame
*
swf
->
ms_per_frame
;
pkt
->
stream_index
=
st
->
index
;
get_buffer
(
pb
,
pkt
->
data
,
pkt
->
size
);
return
pkt
->
size
;
}
else
{
url_fskip
(
pb
,
len
-
2
);
...
...
@@ -874,9 +873,8 @@ static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
for
(
i
=
0
;
i
<
s
->
nb_streams
;
i
++
)
{
st
=
s
->
streams
[
i
];
if
(
st
->
id
==
1
)
{
av_
new_packet
(
pkt
,
len
);
av_
get_packet
(
pb
,
pkt
,
len
);
pkt
->
stream_index
=
st
->
index
;
get_buffer
(
pb
,
pkt
->
data
,
pkt
->
size
);
return
pkt
->
size
;
}
}
...
...
libavformat/utils.c
View file @
2692067a
...
...
@@ -195,6 +195,31 @@ int av_new_packet(AVPacket *pkt, int size)
return
0
;
}
/**
* Allocate and read the payload of a packet and intialized its fields to default values.
*
* @param pkt packet
* @param size wanted payload size
* @return >0 (read size) if OK. AVERROR_xxx otherwise.
*/
int
av_get_packet
(
ByteIOContext
*
s
,
AVPacket
*
pkt
,
int
size
)
{
int
ret
=
av_new_packet
(
pkt
,
size
);
if
(
ret
<
0
)
return
ret
;
pkt
->
pos
=
url_ftell
(
s
);
ret
=
get_buffer
(
s
,
pkt
->
data
,
size
);
if
(
ret
<=
0
)
av_free_packet
(
pkt
);
else
pkt
->
size
=
ret
;
return
ret
;
}
/* This is a hack - the packet memory allocation stuff is broken. The
packet is allocated if it was not really allocated */
int
av_dup_packet
(
AVPacket
*
pkt
)
...
...
libavformat/wc3movie.c
View file @
2692067a
...
...
@@ -318,11 +318,9 @@ static int wc3_read_packet(AVFormatContext *s,
case
VGA__TAG
:
/* send out video chunk */
if
(
av_new_packet
(
pkt
,
size
))
ret
=
AVERROR_IO
;
ret
=
av_get_packet
(
pb
,
pkt
,
size
);
pkt
->
stream_index
=
wc3
->
video_stream_index
;
pkt
->
pts
=
wc3
->
pts
;
ret
=
get_buffer
(
pb
,
pkt
->
data
,
size
);
if
(
ret
!=
size
)
ret
=
AVERROR_IO
;
packet_read
=
1
;
...
...
@@ -349,11 +347,9 @@ static int wc3_read_packet(AVFormatContext *s,
case
AUDI_TAG
:
/* send out audio chunk */
if
(
av_new_packet
(
pkt
,
size
))
ret
=
AVERROR_IO
;
ret
=
av_get_packet
(
pb
,
pkt
,
size
);
pkt
->
stream_index
=
wc3
->
audio_stream_index
;
pkt
->
pts
=
wc3
->
pts
;
ret
=
get_buffer
(
pb
,
pkt
->
data
,
size
);
if
(
ret
!=
size
)
ret
=
AVERROR_IO
;
...
...
libavformat/westwood.c
View file @
2692067a
...
...
@@ -170,15 +170,12 @@ static int wsaud_read_packet(AVFormatContext *s,
return
AVERROR_INVALIDDATA
;
chunk_size
=
LE_16
(
&
preamble
[
0
]);
if
(
av_new_packet
(
pkt
,
chunk_size
))
ret
=
av_get_packet
(
pb
,
pkt
,
chunk_size
);
if
(
ret
!=
chunk_size
)
return
AVERROR_IO
;
pkt
->
stream_index
=
wsaud
->
audio_stream_index
;
pkt
->
pts
=
wsaud
->
audio_frame_counter
;
pkt
->
pts
/=
wsaud
->
audio_samplerate
;
if
((
ret
=
get_buffer
(
pb
,
pkt
->
data
,
chunk_size
))
!=
chunk_size
)
{
av_free_packet
(
pkt
);
ret
=
AVERROR_IO
;
}
/* 2 samples/byte, 1 or 2 samples per frame depending on stereo */
wsaud
->
audio_frame_counter
+=
(
chunk_size
*
2
)
/
wsaud
->
audio_channels
;
...
...
@@ -322,11 +319,8 @@ static int wsvqa_read_packet(AVFormatContext *s,
if
((
chunk_type
==
SND2_TAG
)
||
(
chunk_type
==
VQFR_TAG
))
{
if
(
av_new_packet
(
pkt
,
chunk_size
))
return
AVERROR_IO
;
ret
=
get_buffer
(
pb
,
pkt
->
data
,
chunk_size
);
av_get_packet
(
pb
,
pkt
,
chunk_size
);
if
(
ret
!=
chunk_size
)
{
av_free_packet
(
pkt
);
ret
=
AVERROR_IO
;
}
...
...
libavformat/yuv4mpeg.c
View file @
2692067a
...
...
@@ -356,17 +356,11 @@ static int yuv4_read_packet(AVFormatContext *s, AVPacket *pkt)
if
(
packet_size
<
0
)
return
-
1
;
if
(
av_
new_packet
(
pkt
,
packet_size
)
<
0
)
if
(
av_
get_packet
(
&
s
->
pb
,
pkt
,
packet_size
)
!=
packet_size
)
return
AVERROR_IO
;
pkt
->
stream_index
=
0
;
ret
=
get_buffer
(
&
s
->
pb
,
pkt
->
data
,
pkt
->
size
);
if
(
ret
!=
pkt
->
size
)
{
av_free_packet
(
pkt
);
return
AVERROR_IO
;
}
else
{
return
0
;
}
return
0
;
}
static
int
yuv4_read_close
(
AVFormatContext
*
s
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment