FFmpegfs Fuse Multi Media Filesystem 2.16
|
File transcoder interface (for use with by FUSE) More...
Go to the source code of this file.
Functions | |
bool | transcoder_cached_filesize (LPVIRTUALFILE virtualfile, struct stat *stbuf) |
Simply get encoded file size (do not create the whole encoder/decoder objects) More... | |
bool | transcoder_set_filesize (LPVIRTUALFILE virtualfile, int64_t duration, BITRATE audio_bit_rate, int channels, int sample_rate, AVSampleFormat sample_format, BITRATE video_bit_rate, int width, int height, bool interleaved, const AVRational &framerate) |
Set the file size. More... | |
bool | transcoder_predict_filesize (LPVIRTUALFILE virtualfile, Cache_Entry *cache_entry=nullptr) |
Predict file size. More... | |
Cache_Entry * | transcoder_new (LPVIRTUALFILE virtualfile, bool begin_transcode) |
Allocate and initialise the transcoder. More... | |
bool | transcoder_read (Cache_Entry *cache_entry, char *buff, size_t offset, size_t len, int *bytes_read, uint32_t segment_no) |
Read some bytes from the internal buffer and into the given buffer. More... | |
bool | transcoder_read_frame (Cache_Entry *cache_entry, char *buff, size_t offset, size_t len, uint32_t frame_no, int *bytes_read, LPVIRTUALFILE virtualfile) |
Read one image frame from the internal buffer and into the given buffer. More... | |
void | transcoder_delete (Cache_Entry *cache_entry) |
Free the cache entry structure. More... | |
size_t | transcoder_get_size (Cache_Entry *cache_entry) |
Return size of output file, as computed by encoder. More... | |
size_t | transcoder_buffer_watermark (Cache_Entry *cache_entry, uint32_t segment_no) |
Return the current watermark of the file while transcoding. More... | |
size_t | transcoder_buffer_tell (Cache_Entry *cache_entry, uint32_t segment_no) |
Return the current file position in the file. More... | |
void | transcoder_exit () |
Exit transcoding. More... | |
File transcoder interface (for use with by FUSE)
Definition in file transcode.h.
size_t transcoder_buffer_tell | ( | Cache_Entry * | cache_entry, |
uint32_t | segment_no | ||
) |
Return the current file position in the file.
[in] | cache_entry | - corresponding cache entry |
[in] | segment_no | - HLS segment file number. |
Definition at line 733 of file transcode.cc.
References Cache_Entry::m_buffer.
size_t transcoder_buffer_watermark | ( | Cache_Entry * | cache_entry, |
uint32_t | segment_no | ||
) |
Return the current watermark of the file while transcoding.
While transcoding, this value reflects the current size of the transcoded file. This is the maximum byte offset until the file can be read so far.
[in] | cache_entry | - corresponding cache entry |
[in] | segment_no | - HLS segment file number. |
Definition at line 728 of file transcode.cc.
References Cache_Entry::m_buffer.
Referenced by ffmpegfs_fgetattr().
bool transcoder_cached_filesize | ( | LPVIRTUALFILE | virtualfile, |
struct stat * | stbuf | ||
) |
Simply get encoded file size (do not create the whole encoder/decoder objects)
[in] | virtualfile | - virtual file object to open |
[out] | stbuf | - stat struct filled in with the size of the cached file |
Definition at line 261 of file transcode.cc.
References cache, Cache_Entry::m_cache_info, CACHE_INFO::m_encoded_filesize, CACHE_INFO::m_predicted_filesize, and stat_set_size().
Referenced by create_bluray_virtualfile(), create_cuesheet_virtualfile(), create_dvd_virtualfile(), and ffmpegfs_getattr().
void transcoder_delete | ( | Cache_Entry * | cache_entry | ) |
Free the cache entry structure.
Call this to free the cache entry structure.
The structure is reference counted, after calling this function, if the cache entry is not use by another thread, the cache entry may no longer be valid.
[in] | cache_entry | - corresponding cache entry |
Definition at line 718 of file transcode.cc.
References cache.
Referenced by ffmpegfs_getattr(), ffmpegfs_release(), get_source_properties(), and kick_next().
void transcoder_exit | ( | ) |
Exit transcoding.
Send signal to exit transcoding (ending all transcoder threads).
Definition at line 738 of file transcode.cc.
References thread_exit.
Referenced by ffmpegfs_destroy(), and sighandler().
size_t transcoder_get_size | ( | Cache_Entry * | cache_entry | ) |
Return size of output file, as computed by encoder.
Returns the file size, either the predicted size (which may be inaccurate) or the real size (which is only available once the file was completely recoded).
[in] | cache_entry | - corresponding cache entry |
Definition at line 723 of file transcode.cc.
References Cache_Entry::size().
Referenced by ffmpegfs_getattr().
Cache_Entry * transcoder_new | ( | LPVIRTUALFILE | virtualfile, |
bool | begin_transcode | ||
) |
Allocate and initialise the transcoder.
Opens a file and starts the decoding thread if begin_transcode is true. File will be scanned to detect bit rate, duration etc. only if begin_transcode is false.
[in] | virtualfile | - virtual file object to open |
[in] | begin_transcode | - if true, transcoding starts, if false file will be scanned only |
Definition at line 353 of file transcode.cc.
References cache, CACHE_CLOSE_DELETE, Cache_Entry::clear(), Logging::debug(), Cache_Entry::filename(), Cache_Entry::is_finished_success(), Cache_Entry::lock(), Cache_Entry::m_cache_info, FFMPEGFS_PARAMS::m_disable_cache, CACHE_INFO::m_duration, VIRTUALFILE::m_duration, CACHE_INFO::m_errno, CACHE_INFO::m_error, Cache_Entry::m_is_decoding, CACHE_INFO::m_predicted_filesize, VIRTUALFILE::m_predicted_size, CACHE_INFO::m_video_frame_count, VIRTUALFILE::m_video_frame_count, Cache_Entry::openio(), Cache_Entry::outdated(), params, tp, Logging::trace(), transcoder_predict_filesize(), transcoder_thread(), Cache_Entry::unlock(), and Cache_Entry::virtname().
Referenced by ffmpegfs_getattr(), ffmpegfs_open(), get_source_properties(), and kick_next().
bool transcoder_predict_filesize | ( | LPVIRTUALFILE | virtualfile, |
Cache_Entry * | cache_entry = nullptr |
||
) |
Predict file size.
[in] | virtualfile | - virtual file object to open |
[in] | cache_entry | - corresponding cache entry |
Definition at line 328 of file transcode.cc.
References FFmpeg_Transcoder::closeio(), FFmpeg_Transcoder::duration(), FFmpeg_Transcoder::filename(), format_size_ex(), Cache_Entry::m_cache_info, CACHE_INFO::m_duration, CACHE_INFO::m_predicted_filesize, CACHE_INFO::m_segment_count, CACHE_INFO::m_video_frame_count, FFmpeg_Transcoder::open_input_file(), FFmpeg_Transcoder::predicted_filesize(), FFmpeg_Transcoder::segment_count(), Logging::trace(), and FFmpeg_Transcoder::video_frame_count().
Referenced by transcoder_new().
bool transcoder_read | ( | Cache_Entry * | cache_entry, |
char * | buff, | ||
size_t | offset, | ||
size_t | len, | ||
int * | bytes_read, | ||
uint32_t | segment_no | ||
) |
Read some bytes from the internal buffer and into the given buffer.
[in] | cache_entry | - corresponding cache entry |
[out] | buff | - will be filled in with data read |
[in] | offset | - byte offset to start reading at |
[in] | len | - length of data chunk to be read. |
[out] | bytes_read | - Bytes read from transcoder. |
[in] | segment_no | - HLS segment file number. |
Definition at line 469 of file transcode.cc.
References CACHE_FLAG_RO, FFMPEGFS_PARAMS::current_format(), FFmpegfs_Format::filetype(), Cache_Entry::is_finished_success(), Cache_Entry::m_buffer, Cache_Entry::m_seek_to_no, params, Logging::trace(), Cache_Entry::update_access(), Cache_Entry::update_read_count(), Cache_Entry::virtname(), and Cache_Entry::virtualfile().
Referenced by ffmpegfs_read().
bool transcoder_read_frame | ( | Cache_Entry * | cache_entry, |
char * | buff, | ||
size_t | offset, | ||
size_t | len, | ||
uint32_t | frame_no, | ||
int * | bytes_read, | ||
LPVIRTUALFILE | virtualfile | ||
) |
Read one image frame from the internal buffer and into the given buffer.
[in] | cache_entry | - corresponding cache entry |
[out] | buff | - will be filled in with data read |
[in] | offset | - byte offset to start reading at |
[in] | len | - length of data chunk to be read. |
[in] | frame_no | - Number of frame to return. |
[out] | bytes_read | - Bytes read from transcoder. |
[in,out] | virtualfile | - Birtual file object of image, may be modified. |
Definition at line 603 of file transcode.cc.
References CACHE_FLAG_RO, Logging::error(), GRANULARITY, Cache_Entry::m_buffer, Cache_Entry::m_cache_info, CACHE_INFO::m_error, Cache_Entry::m_is_decoding, Cache_Entry::m_seek_to_no, VIRTUALFILE::m_st, Cache_Entry::m_suspend_timeout, mssleep(), stat_set_size(), thread_exit, TOTAL_RETRIES, Logging::trace(), Cache_Entry::update_access(), Cache_Entry::update_read_count(), Cache_Entry::virtname(), and Logging::warning().
Referenced by ffmpegfs_read().
bool transcoder_set_filesize | ( | LPVIRTUALFILE | virtualfile, |
int64_t | duration, | ||
BITRATE | audio_bit_rate, | ||
int | channels, | ||
int | sample_rate, | ||
AVSampleFormat | sample_format, | ||
BITRATE | video_bit_rate, | ||
int | width, | ||
int | height, | ||
bool | interleaved, | ||
const AVRational & | framerate | ||
) |
Set the file size.
[in] | virtualfile | - virtual file object to open. |
[in] | duration | - duration of the file, in AV_TIME_BASE fractional seconds. |
[in] | audio_bit_rate | - average bitrate of audio data (in bits per second). |
[in] | channels | - number of channels (1: mono, 2: stereo, or more). |
[in] | sample_rate | - number of audio samples per second. |
[in] | sample_format | - Selected sample format |
[in] | video_bit_rate | - average bitrate of video data (in bits per second). |
[in] | width | - video width in pixels. |
[in] | height | - video height in pixels. |
[in] | interleaved | - true if video is interleaved, false if not. |
[in] | framerate | - frame rate per second (e.g. 24, 25, 30...). |
Definition at line 288 of file transcode.cc.
References FFmpegfs_Format::audio_codec(), FFmpeg_Transcoder::audio_size(), cache, FFMPEGFS_PARAMS::current_format(), FFmpegfs_Format::desttype(), Logging::error(), FFmpegfs_Format::filetype(), format_size_ex(), get_codec_name(), get_filetype_text(), Cache_Entry::m_cache_info, CACHE_INFO::m_predicted_filesize, VIRTUALFILE::m_predicted_size, params, FFmpeg_Transcoder::total_overhead(), Logging::trace(), FFmpegfs_Format::video_codec(), FFmpeg_Transcoder::video_size(), Cache_Entry::virtname(), and Logging::warning().
Referenced by create_bluray_virtualfile(), create_cuesheet_virtualfile(), and create_dvd_virtualfile().