[Ffmpeg-devel] OpenGL-Streaming ?
Joerg Anders
j.anders
Wed Jan 10 17:22:57 CET 2007
On Tue, 9 Jan 2007, Luca Barbato wrote:
>> Yes and no! The OpenGL animation can supply frames in simple 24 bit RGB
>> format. I should write a codec which codes RGB to ... what ? Or is
>> RGB already the destination format ?
>
> In that case you may pipe the raw data directly to ffmpeg and have it
> converted in something more compact and understandable or you may just do
> something like libavformat/dv1394.c
>
Please give me still one hint: In "dv1394.c" there is a function:
dv1394_read_packet(AVFormatContext *context, AVPacket *pkt);
in "dv1394.c" near line 134
The image data is attached to the packet in
int dv_produce_packet(DVDemuxContext *c, AVPacket *pkt,
uint8_t* buf, int buf_size)
in "dv.c" near line 331:
size = dv_extract_video_info(c, buf);
av_init_packet(pkt);
pkt->data = buf;
pkt->size = size;
pkt->flags |= PKT_FLAG_KEY;
pkt->stream_index = c->vst->id;
pkt->pts = c->frames;
Instead of reading pixel form a device/file with "dv_extract_video_info" I'd fill
"buf" with the next pixel data from OpenGL-(Mesa-) animation.
But what kind of pixel data is in "buf" ? RGB24 ? YUV ? YUV420P ? ...?
I dont' know what "dv_extract_video_info" supplies?
------
At the end I'd register a new demuxer:
AVInputFormat opengl_demuxer = {
.name = "opengl",
.long_name = "opengl virtual reality",
.priv_data_size = sizeof(mydata),
.read_header = opengl_read_header,
.read_packet = opengl_read_packet,
.read_close = opengl_close,
.flags = AVFMT_NOFILE
};
And in allformats.h:
extern AVInputFormat opengl_demuxer;
And in allformats.c:
REGISTER_DEMUXER (OPENGL, opengl);
Then:
ffmpeg -formats
supplies:
File formats:
D opengl opengl virtual reality
This already works.
But how can I bring the ffserver to use my new demuxer? Which
part in "ffserver.conf" must be changed? Is it a <Feed> or a <Stream>?
Or is it an "ffmpeg" option ?
--
J.Anders, GERMANY, TU Chemnitz, Fakultaet fuer Informatik
More information about the ffmpeg-devel
mailing list