I can think of two possible methods of digital down conversion. One seems superior to the the other for most cases, but I'd like to get some DSP experts' comments on the practical differences between these two.
For both methods described below, I start with the assumption that the $x(t)$ input is already constrained to the band of interest, to avoid the consideration of antialiasing. Antialiasing filters may be necessary in practical applications.
In method A, the in phase component is generated by mixing $x(t)$ with $\cos(\omega t)$ and low pass filtering out the undesired high frequency images. Since there is excess bandwidth in the signal you can use a decimating filter instead of a straight lowpass, shown in my figure below as a blue box around a low pass and a decimator. The quadrature component is similarly obtained by mixing with $\sin(\omega t)$ and then filtering. As a formality I show multiplying the quadrature component by $j$ and adding it to the in phase component.
In method B, convolution is used to perform the discrete Hilbert transform on $x(t)$. This is the reconstruction of the missing quadrature component in $x(t)$. Downconversion is accomplished by mixing the resultant complex signal with a complex sinusoid, no unwanted images generated! Depending on the bandwidth of the baseband signal, it may be smart to add a decimating filter to reduce the data rate, but the output here is usable without that filter. That is, it is not aliased (provided the input signal is limited to the appropriate band).
The primary constraint that I can see in method A is that you can't downconvert by small amounts relative to your bandwidth. Say, for example, you had a 1kHz bandwidth in your signal of interest. If you want to downconvert by 100Hz, method A will not allow for that. The band of the images generated in mixing will intersect the band of the signal of interest. I've seen vector analyzers with analog front ends that can use double down conversion to reject images. A similar method could be used in DSP of course. The problem isn't unsolvable, it just isn't solved by method A.
Method B appears to work around the problems with method A. The construction of a complex signal from the real signal essentially eliminates all negative frequency components, and mixing with a complex sinusoid ensures no images are created, so the only signal present in the output is the signal desired. No filtering is required. However, the convolution required to do the discrete Hilbert transform could be expensive. I would generally choose method A.
My question is: are there advantages / drawbacks of these methods I haven't thought of? What are some practical considerations I should keep in mind before choosing a method?