@@ -86,14 +86,14 @@ struct alsa_stream_out {
|
|||||||
|
|
||||||
static int probe_pcm_out_card() {
|
static int probe_pcm_out_card() {
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char card_node[] = "/proc/asound/card0/id";
|
char card_node[32];
|
||||||
char card_id[16];
|
char card_id[16];
|
||||||
|
|
||||||
char card_prop[PROPERTY_VALUE_MAX];
|
char card_prop[PROPERTY_VALUE_MAX];
|
||||||
property_get("persist.audio.device", card_prop, "");
|
property_get("persist.audio.device", card_prop, "");
|
||||||
|
|
||||||
for (int i = 0; i < 5; i++) {
|
for (int i = 0; i < 5; i++) {
|
||||||
card_node[17] = i + '0';
|
snprintf(card_node, sizeof(card_node), "/proc/asound/card%d/id", i);
|
||||||
if ((fp = fopen(card_node, "r")) != NULL) {
|
if ((fp = fopen(card_node, "r")) != NULL) {
|
||||||
fgets(card_id, sizeof(card_id), fp);
|
fgets(card_id, sizeof(card_id), fp);
|
||||||
ALOGV("%s: %s", card_node, card_id);
|
ALOGV("%s: %s", card_node, card_id);
|
||||||
@@ -346,17 +346,17 @@ static int out_get_presentation_position(const struct audio_stream_out *stream,
|
|||||||
struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
|
struct alsa_stream_out *out = (struct alsa_stream_out *)stream;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
if (out->pcm) {
|
if (out->pcm) {
|
||||||
unsigned int avail;
|
unsigned int avail;
|
||||||
if (pcm_get_htimestamp(out->pcm, &avail, timestamp) == 0) {
|
if (pcm_get_htimestamp(out->pcm, &avail, timestamp) == 0) {
|
||||||
size_t kernel_buffer_size = out->config.period_size * out->config.period_count;
|
size_t kernel_buffer_size = out->config.period_size * out->config.period_count;
|
||||||
int64_t signed_frames = out->written - kernel_buffer_size + avail;
|
int64_t signed_frames = out->written - kernel_buffer_size + avail;
|
||||||
if (signed_frames >= 0) {
|
if (signed_frames >= 0) {
|
||||||
*frames = signed_frames;
|
*frames = signed_frames;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user