Efetuando cálculo de Aspect Ratio de vídeos em C/C++
Publicado por Mauricio Ferrari (LinuxProativo) em 01/02/2023
[ Hits: 2.526 ]
Blog: https://www.youtube.com/@LinuxProativo
// Calculate the Aspect Ratios of given values
function get_aspectRatio(){
var resTd = document.getElementById("msg_status");
resTd.innerHTML = '';
if( (!document.getElementById('aspect_width').value.isNumber()) || (!document.getElementById('aspect_height').value.isNumber()) ){
resTd.innerHTML =
" <div class='alert alert-warning fade in' role='alert'> Invalid width or height entered </div>";
return;
}
var w=parseInt(document.getElementById('aspect_width').value);
var h=parseInt(document.getElementById('aspect_height').value);
if(h == 0 && w == 0){
resTd.innerHTML =
" <div class='alert alert-warning fade in' role='alert'> Please enter valid width and height values! </div>";
return;
}
if(h == 0 && w != 0){
resTd.innerHTML =
" <div class='alert alert-warning fade in' role='alert'> Please enter a valid height value! </div>";
return;
}
if(h!= 0 && w == 0){
resTd.innerHTML =
" <div class='alert alert-warning fade in' role='alert'> Please enter width </div>";
return;
}
if(h == w){
aspectRatio = '1 : 1';
}else{
var mode = null;
if(h>w)
{
dividend = h;
divisor = w;
mode ='portrait';
}
if(w>h){
dividend = w;
divisor = h;
mode = 'landscape';
}
var gcd = -1;
while(gcd == -1){
remainder = dividend%divisor;
if(remainder == 0){
gcd = divisor;
}else{
dividend = divisor;
divisor = remainder;
}
}
var hr = w/gcd;
var vr = h/gcd;
aspectRatio = (hr + ' : ' + vr);
}
$('.screen_mode').text(mode);
$('.final_aspect_ratio').text( aspectRatio );
$('.final_width').text(w);
$('.final_height').text(h);
$('.final_dimensions').text(w + ' × ' + h);
}
QString StatisticsWorker::convertAspectRatio(int x, int y) {
int w = x;
int h = y;
int dividend, divisor;
// Aqui, é definido se o arquivo multimídia é orientado em retrato ou paisagem.
// Se a largura(w) é igual a altura(h) o Aspect Ratio é 1:1 e dispensa detalhes.
if (h == w) {
return "1:1";
} else {
QString mode{};
if (h > w) {
// Orientação em retrato: altura/largura
dividend = h;
divisor = w;
mode = "Portrait";
} else if (w > h) {
// Orientação em paisagem: largura/altura
dividend = w;
divisor = h;
mode = "Landscape";
}
// A string ratio é definida com a orientação definida incluindo o resultado da divisão entre a largura e a altura ou vice-versa.
QString ratio{mode + " " + QString::number(((float)dividend / (float)divisor))};
// Aqui é que vem a calcular. gcd é definido como -1, que será definido um novo valor no loop quando remainder = 0.
uint gcd = -1;
int remainder;
while (gcd == -1) {
// remainder será o valor da sobra da operação.
remainder = dividend % divisor;
if (remainder == 0) {
// gcd será o divisor perfeito para a largura e a altura.
gcd = divisor;
} else {
// A próxima operação sempre será o resultado do divisor pela sobra.
dividend = divisor;
divisor = remainder;
}
}
QString hr = QString::number(w / gcd);
QString vr = QString::number(h / gcd);
return QString::fromLatin1("%1 (%2)").arg(hr + ":" + vr, ratio);
}
}
Três Formas Fáceis de usar Super Usuário pelo Terminal no Linux
O uso do comando LDD, útil para o Slackware
Instalando o Java 14 no Ubuntu, Linux Mint e Debian
Instalando o QMPlay2 no Debian e Derivados
Instalando o Aplicativo de Videoconferência Zoom no Deepin 20
Verificar conversão de tipo em C/C++
Compilar programas em C no Ubuntu com o gcc
printf("Criando Delay em Linguagem C de forma SIMPLES");
Cross Compiling - compilando seus programas C/C++ para Windows usando seu Linux
Limpando a tela sem NCURSES ou clrsrc() - DOS
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Servidor vs Computador Convencional
Como administrar uma rede Linux através da ferramenta Webmin
Como escanear portas de um servidor através da ferramenta Nmap e como alterar a porta do SSH.
Marcando e desmarcando pacotes para atualização, instalação e remoção no Debian e agregados
Audio Failure on Acer Aspire AS4738 – Intel 5 Series HD Audio (Linux M... (1)









