#pragma once
#include <cstddef>
#include <cstdint>
#include <string>
#include <vector>
namespace smartcut::media {
std::string copy_mkv_packets(const std::string& input, const std::string& output);
std::string copy_mkv_keyframe_range(const std::string& input, const std::string& output, std::size_t first_video_packet, std::size_t end_video_packet);
std::string validate_mkv_copy(const std::string& input, const std::string& output);
std::string copy_mkv_audio_window(const std::string& input, const std::string& output, std::int64_t video_start_pts, std::int64_t video_end_pts);
std::string validate_mkv_audio_copy(const std::string& input, const std::string& output, std::int64_t video_start_pts, std::int64_t video_end_pts);
std::string mux_mkv_video_audio(const std::string& video, const std::string& audio, const std::string& output);
std::string validate_mkv_video_audio(const std::string& video, const std::string& audio, const std::string& output);
std::string export_mkv(const std::string& input, const std::string& output);
std::string export_mkv_selected_streams(const std::string& input, const std::string& output,
                                        const std::vector<std::size_t>& selected_streams);
std::string shift_mkv_audio_timestamps(const std::string& input, const std::string& output,
                                       std::int64_t offset_ms);
std::string export_mkv_range(const std::string& input, const std::string& output, std::size_t first_video_packet, std::size_t end_video_packet);
std::string validate_mkv_keyframe_range(const std::string& input, const std::string& output, std::size_t first_video_packet, std::size_t end_video_packet);
}
