X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fdefs.h;h=09743a5abe5e72a9a8c12487c28d4fd756daeb5f;hb=HEAD;hp=7b8cc696de1120de66ce04a1b2d29138089d024c;hpb=392f9d1ccb835c05a3874c4bea163788b2c37024;p=nageru diff --git a/nageru/defs.h b/nageru/defs.h index 7b8cc69..369c9b8 100644 --- a/nageru/defs.h +++ b/nageru/defs.h @@ -1,55 +1,49 @@ #ifndef _DEFS_H #define _DEFS_H -#include - -// This flag is only supported in FFmpeg 3.3 and up, and we only require 3.1. -#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 71, 100) -#define MUX_SKIP_TRAILER "+skip_trailer" -#else -#define MUX_SKIP_TRAILER "" -#endif - -#define OUTPUT_FREQUENCY 48000 // Currently needs to be exactly 48000, since bmusb outputs in that. -#define MAX_FPS 60 +#define TYPICAL_FPS 60 #define FAKE_FPS 25 // Must be an integer. -#define MAX_VIDEO_CARDS 16 +// #define MAX_VIDEO_CARDS 16 // defined in shared_defs.h. #define MAX_ALSA_CARDS 16 #define MAX_BUSES 256 // Audio buses. +// FRAME_SIZE is the default frame size, in bytes. FFmpeg inputs (video files and SRT streams) +// can allocate larger frames as needed; USB and DeckLink outputs always use FRAME_SIZE. +// We should eventually add support for at least DeckLink outputs, allowing us to capture +// 2160p frames. Also, it would allow us to lower the default frame size to the maximum +// bmusb supports (2 MB just about covers 1080i 4:2:2, then add some for 10-bit?) to waste +// less memory. +// +// As a general sanity check, we also have a MAX_FRAME_SIZE that even dynamic allocation +// will not go past. +#define FRAME_SIZE (8 << 20) // 8 MB (just enough for 1080p RGBA). +#define MAX_FRAME_SIZE (140 << 20) // 140 MB; enough for 8192*4320 RGBA and then some. + // For deinterlacing. See also comments on InputState. #define FRAME_HISTORY_LENGTH 5 #define AUDIO_OUTPUT_CODEC_NAME "pcm_s32le" #define DEFAULT_AUDIO_OUTPUT_BIT_RATE 0 #define DEFAULT_X264_OUTPUT_BIT_RATE 4500 // 5 Mbit after making room for some audio and TCP overhead. +#define DEFAULT_AV1_OUTPUT_BIT_RATE 4500 // Same. #define LOCAL_DUMP_PREFIX "record-" #define LOCAL_DUMP_SUFFIX ".nut" #define DEFAULT_STREAM_MUX_NAME "nut" // Only for HTTP. Local dump guesses from LOCAL_DUMP_SUFFIX. #define DEFAULT_HTTPD_PORT 9095 -#define MUX_OPTS { \ - /* Make seekable .mov files, and keep MP4 muxer from using unlimited amounts of memory. */ \ - { "movflags", "empty_moov+frag_keyframe+default_base_moof" MUX_SKIP_TRAILER }, \ - \ - /* Make for somewhat less bursty stream output when using .mov. */ \ - { "frag_duration", "125000" }, \ - \ - /* Keep nut muxer from using unlimited amounts of memory. */ \ - { "write_index", "0" } \ -} - -// In bytes. Beware, if too small, stream clients will start dropping data. -// For mov, you want this at 10MB or so (for the reason mentioned above), -// but for nut, there's no flushing, so such a large mux buffer would cause -// the output to be very uneven. -#define MUX_BUFFER_SIZE 10485760 +#define DEFAULT_SRT_PORT 9710 +#define DEFAULT_SRT_OUTPUT_LATENCY_MS 2000 // In number of frames. Comes in addition to any internal queues in x264 // (frame threading, lookahead, etc.). #define X264_QUEUE_LENGTH 50 +#define AV1_QUEUE_LENGTH 50 #define X264_DEFAULT_PRESET "ultrafast" #define X264_DEFAULT_TUNE "film" +#define DEFAULT_AV1_PRESET 12 +#define DEFAULT_AV1_FPS_NUM 60000 +#define DEFAULT_AV1_FPS_DEN 1001 + #endif // !defined(_DEFS_H)