@@ -90,4 +90,43 @@ In addition to the Google C++ Style Guide, the following rules are applied:
- when returning multiple values, use `std::tuple` or `std::pair`, instead of passing by reference;
- when dealing with nullable values, use `std::optional`;
- avoid to manipulate global variables, if you need to share data between different parts of the code, use dependency injection and pass the data as a parameter;
\ No newline at end of file
- avoid to manipulate global variables, if you need to share data between different parts of the code, use dependency injection and pass the data as a parameter;
## Naming conventions
In C++, there are several naming conventions that are widely followed to improve code readability and maintainability. Although there is no strict standard enforced by the language, the following conventions are commonly used:
1. Variable Names:
- Use descriptive and meaningful names that reflect the purpose of the variable.
- Prefer lowercase letters for variable names.
- Use underscores (_) to separate words in multi-word variable names.
- Avoid using single uppercase letters as variable names, especially as standalone variables.
Example: `int num_items;`
2. Function Names:
- Use verbs or verb phrases to describe actions or operations performed by the function.
- Prefer lowercase letters for function names.
- Use underscores (_) to separate words in multi-word function names.
- Use parentheses () for function parameters, even if they are empty.
Example: `void calculate_average();`
3. Class/Struct Names:
- Use noun phrases or nouns to describe the purpose or nature of the class/struct.
- Use uppercase letters for each word (known as "PascalCase" or "camel case").
- Avoid abbreviations unless they are widely recognized.
Example: `class CustomerData;`
4. Constant Names:
- Use uppercase letters for constants.
- Use underscores (_) to separate words in multi-word constant names.
- Prefer meaningful and self-explanatory names for constants.
Example: `const int MAX_SIZE = 100;`
5. Global Variable Names:
- Avoid using global variables whenever possible. However, if necessary, prefix them with `g_` or use a namespace to indicate their global nature.
Example: `int g_global_variable;` or `namespace globals { int global_variable; }`
The main goal of the MPAI-CAE ARP software is to take audio an video input of a open reel tape, analyse them and produce as output some kind of classifications and restorations (if needed).
# The input
As already said, the input consists of a video and an audio file of an open reel tape. The video file contains the video of the tape reproduced on the recorder, pointing the camera to the capstan, the pinch roller and the reading head. The audio file contains the audio of the tape reproduced on the recorder and captured from the headphone exit.
Focusing on the video analysis, the software should be able to detect tape irregularities, such as:
- Splices
- Brands on tape
- Start of tape
- End of tape
- Damaged tape
- Dirt
- Marks
- Shadows
- Wow and flutter
Most of the brands consist of the full name of the tape manufacturer, logo, or tape model codes. The brand changes in size, shape, and colour, depending on the tape used.
# Software Requirements
The software should be able to, given as input the video of an open reel tape, produce as output two irregularity files where are listed the irregularities found in the video and the irregularities found in the audio.