Panda3D
panda
src
ffmpeg
ffmpegAudioCursor.h
Go to the documentation of this file.
1
/**
2
* PANDA 3D SOFTWARE
3
* Copyright (c) Carnegie Mellon University. All rights reserved.
4
*
5
* All use of this software is subject to the terms of the revised BSD
6
* license. You should have received a copy of this license along
7
* with this source code in a file named "LICENSE."
8
*
9
* @file ffmpegAudioCursor.h
10
* @author jyelon
11
* @date 2007-08-01
12
*/
13
14
#ifndef FFMPEGAUDIOCURSOR_H
15
#define FFMPEGAUDIOCURSOR_H
16
17
#include "
pandabase.h
"
18
19
#include "
movieAudioCursor.h
"
20
#include "
namable.h
"
21
#include "
texture.h
"
22
#include "
pointerTo.h
"
23
#include "
ffmpegVirtualFile.h
"
24
25
extern
"C"
{
26
#include <libavcodec/avcodec.h>
27
}
28
29
class
FfmpegAudio
;
30
struct
AVFormatContext;
31
struct
AVCodecContext;
32
struct
AVStream;
33
struct
AVPacket;
34
struct
SwrContext;
35
36
/**
37
* A stream that generates a sequence of audio samples.
38
*/
39
class
EXPCL_FFMPEG
FfmpegAudioCursor
:
public
MovieAudioCursor
{
40
friend
class
FfmpegAudio
;
41
42
PUBLISHED:
43
FfmpegAudioCursor
(
FfmpegAudio
*src);
44
virtual
~
FfmpegAudioCursor
();
45
virtual
void
seek
(
double
offset);
46
47
public
:
48
virtual
void
read_samples
(
int
n, int16_t *data);
49
50
protected
:
51
void
fetch_packet();
52
bool
reload_buffer();
53
void
cleanup();
54
Filename
_filename;
55
int
_initial_dts;
56
AVPacket *_packet;
57
int
_packet_size;
58
unsigned
char
*_packet_data;
59
AVFormatContext *_format_ctx;
60
AVCodecContext *_audio_ctx;
61
FfmpegVirtualFile
_ffvfile;
62
int
_audio_index;
63
double
_audio_timebase;
64
65
AVFrame *_frame;
66
int16_t *_buffer;
67
int
_buffer_size;
68
int16_t *_buffer_alloc;
69
int
_buffer_head;
70
int
_buffer_tail;
71
72
SwrContext *_resample_ctx;
73
74
public
:
75
static
TypeHandle
get_class_type() {
76
return
_type_handle;
77
}
78
static
void
init_type() {
79
MovieAudioCursor::init_type();
80
register_type
(_type_handle,
"FfmpegAudioCursor"
,
81
MovieAudioCursor::get_class_type());
82
}
83
virtual
TypeHandle
get_type()
const
{
84
return
get_class_type();
85
}
86
virtual
TypeHandle
force_init_type() {init_type();
return
get_class_type();}
87
88
private
:
89
static
TypeHandle
_type_handle;
90
};
91
92
#include "
ffmpegAudioCursor.I
"
93
94
#endif // FFMPEGAUDIOCURSOR_H
FfmpegAudioCursor
A stream that generates a sequence of audio samples.
Definition:
ffmpegAudioCursor.h:39
pandabase.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
FfmpegAudio
A stream that generates a sequence of audio samples.
Definition:
ffmpegAudio.h:25
ffmpegAudioCursor.I
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
register_type
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
Definition:
register_type.I:22
FfmpegVirtualFile
Enables ffmpeg to access panda's VFS.
Definition:
ffmpegVirtualFile.h:34
MovieAudioCursor::seek
virtual void seek(double offset)
Skips to the specified offset within the file.
Definition:
movieAudioCursor.cxx:133
TypeHandle
TypeHandle is the identifier used to differentiate C++ class types.
Definition:
typeHandle.h:81
namable.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
MovieAudioCursor::read_samples
void read_samples(int n, Datagram *dg)
Read audio samples from the stream into a Datagram.
Definition:
movieAudioCursor.cxx:73
movieAudioCursor.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
MovieAudioCursor
A MovieAudio is actually any source that provides a sequence of audio samples.
Definition:
movieAudioCursor.h:34
texture.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pointerTo.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
ffmpegVirtualFile.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Filename
The name of a file, such as a texture file or an Egg file.
Definition:
filename.h:39
Generated on Sun Dec 27 2020 13:22:58 for Panda3D by
1.8.20