Lines Matching defs:sga
183 SGADemuxContext *sga = s->priv_data;
186 sga->sector_headers = 1;
187 sga->first_audio_size = 0;
188 sga->video_stream_index = -1;
189 sga->audio_stream_index = -1;
190 sga->left = 2048;
191 sga->idx = 0;
202 if (!sga->first_audio_size &&
207 sga->first_audio_size = avio_rb16(pb);
210 sga->sample_rate = av_rescale(clock,
218 sga->sector_headers = 0;
233 SGADemuxContext *sga = s->priv_data;
237 av_log(s, AV_LOG_DEBUG, "idx: %X\n", sga->idx);
238 av_log(s, AV_LOG_DEBUG, "packet_type: %X\n", sga->packet_type);
239 av_log(s, AV_LOG_DEBUG, "payload_size: %X\n", sga->payload_size);
240 av_log(s, AV_LOG_DEBUG, "SECTOR: %016"PRIX64"\n", AV_RB64(sga->sector));
241 av_log(s, AV_LOG_DEBUG, "stream: %X\n", sga->sector[1]);
247 SGADemuxContext *sga = s->priv_data;
249 if (sga->idx >= 4) {
250 sga->packet_type = sga->sector[0];
251 sga->payload_size = AV_RB16(sga->sector + 2);
253 sga->packet_type = 0;
254 sga->payload_size = 0;
260 SGADemuxContext *sga = s->priv_data;
263 if (sga->payload_size <= 8)
266 if (sga->video_stream_index == -1) {
277 sga->video_stream_index = st->index;
279 if (sga->first_audio_size > 0 && sga->sample_rate > 0) {
280 frame_rate.num = sga->sample_rate;
281 frame_rate.den = sga->first_audio_size;
289 ret = av_new_packet(pkt, sga->payload_size + 4);
292 memcpy(pkt->data, sga->sector, sga->payload_size + 4);
293 av_assert0(sga->idx >= sga->payload_size + 4);
294 memmove(sga->sector, sga->sector + sga->payload_size + 4, sga->idx - sga->payload_size - 4);
296 pkt->stream_index = sga->video_stream_index;
298 pkt->pos = sga->pkt_pos;
299 pkt->flags |= sga->flags;
300 sga->idx -= sga->payload_size + 4;
301 sga->flags = 0;
304 av_log(s, AV_LOG_DEBUG, "VIDEO PACKET: %d:%016"PRIX64" i:%X\n", pkt->size, AV_RB64(sga->sector), sga->idx);
311 SGADemuxContext *sga = s->priv_data;
314 if (sga->payload_size <= 8)
317 if (sga->audio_stream_index == -1) {
327 st->codecpar->sample_rate = av_rescale(AV_RB16(sga->sector + 8),
330 sga->audio_stream_index = st->index;
335 ret = av_new_packet(pkt, sga->payload_size - 8);
338 memcpy(pkt->data, sga->sector + 12, sga->payload_size - 8);
339 av_assert0(sga->idx >= sga->payload_size + 4);
340 memmove(sga->sector, sga->sector + sga->payload_size + 4, sga->idx - sga->payload_size - 4);
342 pkt->stream_index = sga->audio_stream_index;
344 pkt->pos = sga->pkt_pos;
345 pkt->flags |= sga->flags;
346 sga->idx -= sga->payload_size + 4;
347 sga->flags = 0;
350 av_log(s, AV_LOG_DEBUG, "AUDIO PACKET: %d:%016"PRIX64" i:%X\n", pkt->size, AV_RB64(sga->sector), sga->idx);
357 SGADemuxContext *sga = s->priv_data;
360 if (sga->packet_type == 0xCD ||
361 sga->packet_type == 0xCB ||
362 sga->packet_type == 0xC9 ||
363 sga->packet_type == 0xC8 ||
364 sga->packet_type == 0xC7 ||
365 sga->packet_type == 0xC6 ||
366 sga->packet_type == 0xC1 ||
367 sga->packet_type == 0xE7) {
369 } else if (sga->packet_type == 0xA1 ||
370 sga->packet_type == 0xA2 ||
371 sga->packet_type == 0xA3 ||
372 sga->packet_type == 0xAA) {
375 if (sga->idx == 0)
377 if (sga->sector[0])
379 memmove(sga->sector, sga->sector + 1, sga->idx - 1);
380 sga->idx--;
389 SGADemuxContext *sga = s->priv_data;
393 if (sga->idx >= sga->payload_size + 4) {
401 return sga->idx < sga->payload_size + 4 ? AVERROR(EAGAIN) : ret;
406 SGADemuxContext *sga = s->priv_data;
410 sga->pkt_pos = avio_tell(pb);
417 (!sga->payload_size || sga->idx < sga->payload_size + 4))
420 if (sga->idx < sga->payload_size + 4) {
429 sga->left = 0;
432 !sga->sector_headers)) {
434 sga->flags = AV_PKT_FLAG_KEY;
435 sga->left = 2048;
437 sga->left = 2046;
440 av_assert0(sga->idx + sga->left < sizeof(sga->sector));
441 ret = avio_read(pb, sga->sector + sga->idx, sga->left);
443 sga->idx += ret;
461 SGADemuxContext *sga = s->priv_data;
463 sga->packet_type = sga->payload_size = sga->idx = 0;
464 memset(sga->sector, 0, sizeof(sga->sector));
470 .name = "sga",
477 .extensions = "sga",