[Google Pixel XL Guides, News, & Discussion] chdloc:
Introduction

I created this thread to post and discuss measurements and data related to audio fidelity of the headphone output. Note that audio fidelity does not automatically correlate with audio quality. Audio quality is a very subjective measure. Some people like their audio to be very bass heavy while others prefer accentuated mids and/or highs. Yet others (like myself) enjoy a very "neutral" sound signature. Audio fidelity -- at least the way I define it -- on the other hand can be measured: Audio data is fed to the DAC/amp and measured at the output. For perfect fidelity, the recorded output is identical to the input. Of course, this ideal cannot be achieved. Deviations from the ideal can be measured, documented, and discussed. Particularly, not all deviations from the ideal are actually audible. I predict some heated discussions on audibility in this thread going forward...;)

Test Equipment

The device under test (DUT) is a Pixel XL that sports a Qualcomm WCD9335 codec/amp discrete audio chip. The headphone output is split with a Y-wire. One signal path goes into the measurement rig, a Rohde & Schwarz UPV Audio Analyzer. Depending on the measurement, the other end either stays open (not connected or N/C) or connected to my Sennheiser IE800 IEMs. Those IEMs have a virtually frequency-independent impedance of 16 Ohm, a sensitivity of 125 dB/Vrms at 1 kHz, and a ruler-flat phase response. These IEMs are not only one of the best "sounding" headphones I know, but actually very easy to drive as the specs that I've listed suggest.

Test Signals

For the tests conducted so far, I have used two signals that I created with Matlab:

stereo wave file with full-scale (0 dBFS) 1 kHz sine wave in the left channel and silence (zeros) in the right channel (16 bit, 48 kHz sampling rate)

stereo wave file with white noise mastered to take advantage of the full dynamic range (16 bit, 48 kHz sampling rate)

These signals were played with the stock Android music player, with all audio effects disabled.

In some cases I swapped the Pixel XL with an iPhone 5s for comparison purposes. All other hardware stayed the same.

Measurement Results

This section summarizes the measurements detailed in the second post.

Output Impedance

The Pixel's output impedance was measured to be 4.8 Ohm. To compare, the output impedance of the iPhone 5s' amp is 2.0 Ohm.

Comments:

The Pixel's output impedance violates the often-quoted 1/8 rule in some cases. The rule says that most amps work best with headphones that have an impedance that is at least eight times its own output impedance. According to this rule, headphones should ideally have an impedance of more than 40 Ohm. Nevertheless, the amp seems to work with my 16 Ohm IEMs without any issues (other than the level drop, see below). The reason, I think, is that my IEMs make use of a single dynamic driver rather than multiple balanced armature ones like many other IEMs. Multiple balanced armature drivers are much harder to drive and may cause minor problems (slight modification of the frequency response) with the amp in the Pixel

Frequency Response (see plots in the second post)

The frequency response is ruler flat, whose shape does not change at all once my IEMs are plugged in as a load. The gain dropped by 2.3 dB after plugging in the headphones. The reason for this drop is the interaction of the headphone's impedances with the output impedance of the amp. Higher impedance headphones will see a smaller drop in volume when plugged into the Pixel.

The channel imbalance is a negligible 0.1 dB at 1 kHz.

Comments:

As discussed above, the only potential issue I can see here is that the combination of this amp with low-impedance multiple armature-based IEMs may lead to slight modifications in the overall frequency response, maybe on the order of +/- 2 dB max.

Maximum output level

When the volume on the Pixel is turned up all the way, the maximum attainable output voltage with a full-scale 1 kHz sine wave is 0.427 Vrms, without any load attached. I have found that the output volume was capped digitally to -7 dBFS in the mixer by Google. The maximum theoretically attainable output voltage of virtually any DAC/amp combo devices is 1 Vrms. Once a custom recovery has been made available for the Pixel, it should be trivial to boost its maximum output voltage to 1 Vrms.

Comments:

No issues here.

Volume level steps with volume rocker

As discussed above, at max volume the Pixel delivers 0.427 Vrms, which is volume step 15.

Lowering the output volume from the maximum setting, 15, with the volume rocker results in the following steps (rounded):

Volume setting: 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0

Change in gain: 0dB, -3dB, -3dB,-3dB,-3dB,-3dB,-3dB,-4dB,-4dB,-3dB,-4dB,-4dB,-4dB,-7dB,-7dB,-54dB

Noise Floor

The noise floor was measured to be 115 dB, which gives a theoretical dynamic range of (currently) 108 dB.

Comments:

No issues here.

Total Harmonic Distortion + Noise (THD+N, see plots in the second post)

Measurements of THD+N were done on both iPhone 5s and Pixel at their respective maximum volume as well at a volume setting that corresponds to an output voltage of around 20 mV, with which the IE800 would produce around 90 dB SPL:

Pixel at 20 mV: THD+N is -71.4 dB

Pixel @ max volume: THD+N is -81.3 dB

iPhone 5s at 20 mV: THD+N is -78.7 dB

iPhone 5s @ max volume: THD+N is -84.1 dB

Comments:

By comparing the plots in the second post, it can be seen that the Pixel has higher non-linear distortions than the iPhone 5s, especially at low output voltages. The reason for this is that Google and I believe any other Android manufacturer opts to maximize analog gain while controlling overall level with digital gain only. This is not ideal. It would be better to hit the codec with the highest digital gain possible (but no more than 0 dB), keep the analog gain low initially and control overall loudness with the analog gain only. This way the full dynamic range of the DAC can be utilized. This is the paradigm that virtually any home/car stereo systems utilizes. Based on the plots below, I'm guessing that Apple is doing it, too.

Intermodulation Distortion

Preliminary inspection of SMPTE IMD measurements suggest no problems either unloaded or loaded with my IEMs. Measurements to follow sometime next week.

Stereo Crosstalk

Stereo crosstalk very much depends on the interaction of amp, headphone, and analog circuit design of the phone. Here, at least on the surface, the Pixel does not seem to be showing strong numbers. With my headphones attached and throughout the volume range offered by the Pixel, I measured the stereo crosstalk to be 45 dB. I compared this number with the iPhone 5s. Interestingly, stereo crosstalk on the iPhone shows a strong dependence on the playback level. Again with the IEMs attached the crosstalk ranged from 43 dB at the lower volume settings up to 60 dB at the higher end. I repeated the measurements with full-size cans, the Sennheiser HD 540 (300 Ohm). With those headphones attached, the stereo crosstalk of both the iPhone 5s and the Pixel are north of 80 dB.

Comments:

To put things into perspective, though, at the playback levels that in the long run do not cause permanent hearing loss (less than 90 dB SPL at the ear drum) with the IEMs, both iPhone 5s and Pixel have very similar stereo crosstalk performance, i.e. around 45 dB. Carefully controlled double-blind tests should be considered to determine at what point crosstalk actually becomes audible.

Comments on the Pixel mixer

There is one thing that strikes me as odd after having examined the Pixel mixer (/system/etc/mixer_paths.xml): The amplifier is set up as "CLS_H_LOHIFI" and not as "CLS_H_HIFI", which is the default for the WCD9335 in general and the HTC10 in particular. While I don't know what exactly the differences between those two settings are, I will play around with them as soon as a custom recovery becomes available. I'll also look into enabling hardware IIR filtering via the Qualcomm codec and update my biQuads app.