Ok, so it's confirmed I need 8 Bits of resolution.
I have gotten 4 channels kinda working on the PIC16F1578. Problem is if I switch up the duty cycle of the inputs it goes crazy. The 4 channels only works if the duty cycle is smallest to greatest, in the way it is being checked. Image attached of the scenario when it works.
I am starting to think it is possible to do the divider on the PIC16F1578, assuming the channels are demuxed right. I am still using a gated timer, below is the main.
unsigned int Period,flag,pulse,tm1;
// this is where the duty cycle is measured based on the timer interrupt. Flag is incremented to demux.
case 0x0: T1GPPS = 0x16; //RC7 > PWM1
case 0x1: T1GPPS = 0x13; //RC6 > PWM2
case 0x2: T1GPPS = 0x14; //RC3 > PWM3
case 0x3: T1GPPS = 0x17; //RC4 > PWM4
default: flag = 0;
INTCONbits.IOCIE = 0;
INTCONbits.IOCIF = 0;
pulse[flag] = Get_Pulse();
//T1GPPS = pin; //attach pin
T1GCON = 0xD8; //enable timer1 gate, set toggle mode off
T1CON = 0x45; //set clock to Fosc/4
T2CONbits.TMR2ON = 1;//start timer2
tm1 = (TMR1L|(TMR1H << 8)); // take timer register value
PIR1bits.TMR1GIF = 0; //reset timer1 gate flag
TMR1H = 0x00; //clear timer registers
TMR1L = 0x00;