AfonsoCMSousa/vcomp#1 feat: Checked if files are valid Video files

This commit is contained in:
AfonsoCMSousa
2025-12-15 16:39:50 +00:00
parent bfcfad931c
commit 2ef15af49e
60 changed files with 7424 additions and 8 deletions
+28
View File
@@ -0,0 +1,28 @@
#include "file_types.hpp"
bool isVideoFile(std::string filename, fileType &type) {
size_t dotPos = filename.find_last_of('.');
if (dotPos == std::string::npos) {
type = unknown;
return false;
}
std::string ext = filename.substr(dotPos + 1);
if (ext == "mp4") {
type = mp4;
} else if (ext == "avi") {
type = avi;
} else if (ext == "mkv") {
type = mkv;
} else if (ext == "mov") {
type = mov;
} else if (ext == "flv") {
type = flv;
} else if (ext == "webm") {
type = webm;
} else {
type = unknown;
return false;
}
return true;
}
+59 -5
View File
@@ -1,17 +1,71 @@
#include <iostream>
#include <string>
#include "print.hpp"
#include "file_types.hpp"
using namespace std;
bool verbose = false;
file input_file;
file output_file;
Logger logger;
int main(int argc, char* argv[])
{
if (argc < 2) {
logger.err("No arguments provided.\n");
logger.err("Usage: %s [args...]\n", argv[0]);
int main(int argc, char *argv[]) {
if (argc < 2) {
logger.println("No arguments provided.");
logger.println("Usage: \t%s [args...]", argv[0]);
logger.println("\t-i <file>\tSpecify input file");
logger.println("\t-o <file>\tSpecify output file");
logger.println("\t-v \t\tEnable verbose mode");
return 1;
}
for (int i = 1; i < argc; ++i) {
string arg = argv[i];
if (arg == "-i" && i + 1 < argc) {
input_file.setFilename(argv[++i]);
if (verbose)
logger.log("Input file set to: %s\n", argv[i]);
} else if (arg == "-o" && i + 1 < argc) {
output_file.setFilename(argv[++i]);
if (verbose)
logger.log("Output file set to: %s\n", argv[i]);
} else if (arg == "-v") {
verbose = true;
logger.log("Verbose mode enabled.\n");
} else {
logger.err("Unknown argument: %s \"%s\"\n", argv[i], (i + 1 < argc) ? argv[i + 1] : "");
return 1;
}
}
// INFO: Check if input files are video
if (input_file.getType() == unknown) {
logger.err("Input file type is unknown or unsupported: %s\n", input_file.getFilename().c_str());
return 1;
} else {
if (verbose)
logger.log("Input file type recognized: %s\n", input_file.getFilename().c_str());
}
if (output_file.getType() == unknown) {
logger.err("Output file type is unknown or unsupported: %s\n", output_file.getFilename().c_str());
return 1;
} else {
if (verbose)
logger.log("Output file type recognized: %s\n", output_file.getFilename().c_str());
}
if(!(input_file == output_file)) {
logger.err("Input and output files have to be the same: %s != %s\n", input_file.getFilename().c_str(), output_file.getFilename().c_str());
return 1;
}
if (verbose) {
logger.log("Processing from %s to %s\n", input_file.getFilename().c_str(), output_file.getFilename().c_str());
}
return 0;
}
+34 -3
View File
@@ -3,18 +3,49 @@
void Logger::log(const char* format, ...)
{
printf("[Log]:\t");
va_list args;
va_start(args, format);
vprintf(format, args);
fprintf(stdout,"[LOG]: ");
vfprintf(stdout,format, args);
va_end(args);
fflush(stdout);
}
void Logger::err(const char* format, ...)
{
printf("[Error]:\t");
va_list args;
va_start(args, format);
fprintf(stderr, "[ERROR]: ");
vfprintf(stderr, format, args);
va_end(args);
fflush(stderr);
}
void Logger::warn(const char* format, ...)
{
va_list args;
va_start(args, format);
fprintf(stderr, "[WARN]: ");
vfprintf(stderr, format, args);
va_end(args);
fflush(stderr);
}
void Logger::print(const char* format, ...)
{
va_list args;
va_start(args, format);
vfprintf(stdout, format, args);
va_end(args);
fflush(stdout);
}
void Logger::println(const char* format, ...)
{
va_list args;
va_start(args, format);
vfprintf(stdout, format, args);
fprintf(stdout, "\n");
va_end(args);
fflush(stdout);
}