Browse Source

Move parsing of MPEG-PES timestamp to mpeg.h (as an inline function) so it

can easily be reused by other demuxers for formats that encapsulate MPEG-PES.

Originally committed as revision 11451 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Ivo van Poorten 18 years ago
parent
commit
66e9e30239
2 changed files with 15 additions and 11 deletions
  1. +6
    -11
      libavformat/mpeg.c
  2. +9
    -0
      libavformat/mpeg.h

+ 6
- 11
libavformat/mpeg.c View File

@@ -120,17 +120,12 @@ static int mpegps_read_header(AVFormatContext *s,

static int64_t get_pts(ByteIOContext *pb, int c)
{
int64_t pts;
int val;

if (c < 0)
c = get_byte(pb);
pts = (int64_t)(c & 0x0e) << 29;
val = get_be16(pb);
pts |= (int64_t)(val >> 1) << 15;
val = get_be16(pb);
pts |= (int64_t)(val >> 1);
return pts;
uint8_t buf[5];

buf[0] = c<0 ? get_byte(pb) : c;
get_buffer(pb, buf+1, 4);

return ff_parse_pes_pts(buf);
}

static int find_next_start_code(ByteIOContext *pb, int *size_ptr,


+ 9
- 0
libavformat/mpeg.h View File

@@ -57,4 +57,13 @@

static const int lpcm_freq_tab[4] = { 48000, 96000, 44100, 32000 };

/**
* Parse MPEG-PES five-byte timestamp
*/
static inline int64_t ff_parse_pes_pts(uint8_t *buf) {
return (int64_t)(*buf & 0x0e) << 29 |
(AV_RB16(buf+1) >> 1) << 15 |
AV_RB16(buf+3) >> 1;
}

#endif /* FFMPEG_MPEG_H */

Loading…
Cancel
Save