| 
    FFmpeg
    
   | 
 
#include <stdint.h>#include <string.h>#include "libavutil/avassert.h"#include "libavutil/channel_layout.h"#include "libavutil/cpu.h"#include "libavutil/error.h"#include "libavutil/fifo.h"#include "libavutil/mathematics.h"#include "libavutil/mem.h"#include "libavutil/samplefmt.h"#include "libavutil/timestamp.h"#include "objpool.h"#include "sync_queue.h"Go to the source code of this file.
Data Structures | |
| struct | SyncQueueStream | 
| struct | SyncQueue | 
| A sync queue provides timestamp synchronization between multiple streams.  More... | |
Functions | |
| static void | frame_move (const SyncQueue *sq, SyncQueueFrame dst, SyncQueueFrame src) | 
| static int64_t | frame_end (const SyncQueue *sq, SyncQueueFrame frame, int nb_samples) | 
| Compute the end timestamp of a frame.  More... | |
| static int | frame_samples (const SyncQueue *sq, SyncQueueFrame frame) | 
| static int | frame_null (const SyncQueue *sq, SyncQueueFrame frame) | 
| static void | tb_update (const SyncQueue *sq, SyncQueueStream *st, const SyncQueueFrame frame) | 
| static void | finish_stream (SyncQueue *sq, unsigned int stream_idx) | 
| static void | queue_head_update (SyncQueue *sq) | 
| static void | stream_update_ts (SyncQueue *sq, unsigned int stream_idx, int64_t ts) | 
| static int | overflow_heartbeat (SyncQueue *sq, int stream_idx) | 
| int | sq_send (SyncQueue *sq, unsigned int stream_idx, SyncQueueFrame frame) | 
| Submit a frame for the stream with index stream_idx.  More... | |
| static void | offset_audio (AVFrame *f, int nb_samples) | 
| static int | frame_is_aligned (const SyncQueue *sq, const AVFrame *frame) | 
| static int | receive_samples (SyncQueue *sq, SyncQueueStream *st, AVFrame *dst, int nb_samples) | 
| static int | receive_for_stream (SyncQueue *sq, unsigned int stream_idx, SyncQueueFrame frame) | 
| static int | receive_internal (SyncQueue *sq, int stream_idx, SyncQueueFrame frame) | 
| int | sq_receive (SyncQueue *sq, int stream_idx, SyncQueueFrame frame) | 
| Read a frame from the queue.  More... | |
| int | sq_add_stream (SyncQueue *sq, int limiting) | 
| Add a new stream to the sync queue.  More... | |
| void | sq_limit_frames (SyncQueue *sq, unsigned int stream_idx, uint64_t frames) | 
| Limit the number of output frames for stream with index stream_idx to max_frames.  More... | |
| void | sq_frame_samples (SyncQueue *sq, unsigned int stream_idx, int frame_samples) | 
| Set a constant output audio frame size, in samples.  More... | |
| SyncQueue * | sq_alloc (enum SyncQueueType type, int64_t buf_size_us, void *logctx) | 
| Allocate a sync queue of the given type.  More... | |
| void | sq_free (SyncQueue **psq) | 
      
  | 
  static | 
Definition at line 115 of file sync_queue.c.
Referenced by receive_for_stream(), and sq_send().
      
  | 
  static | 
Compute the end timestamp of a frame.
If nb_samples is provided, consider the frame to have this number of audio samples, otherwise use frame duration.
Definition at line 128 of file sync_queue.c.
Referenced by bethsoftvid_decode_frame(), bfi_decode_frame(), decode_bmv_frame(), decode_dds1(), decode_dsw1(), decode_tdlt(), decode_tsw1(), decode_wdlt(), ff_h263_decode_frame(), get_duration(), overflow_heartbeat(), receive_for_stream(), sq_send(), and write_subframes().
      
  | 
  static | 
Definition at line 141 of file sync_queue.c.
Referenced by receive_for_stream(), sq_frame_samples(), sq_send(), and validate_options().
      
  | 
  static | 
Definition at line 146 of file sync_queue.c.
Referenced by sq_send().
      
  | 
  static | 
Definition at line 151 of file sync_queue.c.
Referenced by sq_send().
Definition at line 171 of file sync_queue.c.
Referenced by sq_limit_frames(), sq_send(), and stream_update_ts().
      
  | 
  static | 
Definition at line 218 of file sync_queue.c.
Referenced by stream_update_ts().
Definition at line 253 of file sync_queue.c.
Referenced by overflow_heartbeat(), and sq_send().
Definition at line 282 of file sync_queue.c.
Referenced by sq_receive().
| int sq_send | ( | SyncQueue * | sq, | 
| unsigned int | stream_idx, | ||
| SyncQueueFrame | frame | ||
| ) | 
Submit a frame for the stream with index stream_idx.
On success, the sync queue takes ownership of the frame and will reset the contents of the supplied frame. On failure, the frame remains owned by the caller.
Sending a frame with NULL contents marks the stream as finished.
Definition at line 343 of file sync_queue.c.
Referenced by close_output_stream(), enc_flush(), submit_encode_frame(), and sync_queue_process().
Definition at line 409 of file sync_queue.c.
Referenced by receive_samples().
Definition at line 432 of file sync_queue.c.
Referenced by receive_for_stream(), and receive_samples().
      
  | 
  static | 
Definition at line 448 of file sync_queue.c.
Referenced by receive_for_stream().
      
  | 
  static | 
Definition at line 524 of file sync_queue.c.
Referenced by receive_internal().
      
  | 
  static | 
Definition at line 584 of file sync_queue.c.
Referenced by sq_receive().
| int sq_receive | ( | SyncQueue * | sq, | 
| int | stream_idx, | ||
| SyncQueueFrame | frame | ||
| ) | 
Read a frame from the queue.
| stream_idx | index of the stream to read a frame for. May be -1, then try to read a frame from any stream that is ready for output. | 
| frame | output frame will be written here on success. The frame is owned by the caller. | 
Definition at line 608 of file sync_queue.c.
Referenced by submit_encode_frame(), and sync_queue_process().
Add a new stream to the sync queue.
| limiting | whether the stream is limiting, i.e. no other stream can be longer than this one | 
Definition at line 620 of file sync_queue.c.
Referenced by setup_sync_queues().
Limit the number of output frames for stream with index stream_idx to max_frames.
Definition at line 649 of file sync_queue.c.
Referenced by setup_sync_queues().
Set a constant output audio frame size, in samples.
Can only be used with SYNC_QUEUE_FRAMES queues and audio streams.
All output frames will have exactly frame_samples audio samples, except possibly for the last one, which may have fewer.
Definition at line 661 of file sync_queue.c.
Referenced by enc_open().
| SyncQueue* sq_alloc | ( | enum SyncQueueType | type, | 
| int64_t | buf_size_us, | ||
| void * | logctx | ||
| ) | 
Allocate a sync queue of the given type.
| buf_size_us | maximum duration that will be buffered in microseconds | 
Definition at line 675 of file sync_queue.c.
Referenced by setup_sync_queues().
| void sq_free | ( | SyncQueue ** | psq | ) | 
Definition at line 699 of file sync_queue.c.
Referenced by of_free().
 1.8.17