Форум автозвука и установки музыки в автомобиль
Страница 14 из 18 ПерваяПервая ... 4101112131415161718 ПоследняяПоследняя
Показано с 131 по 140 из 177

Андроид зеркало на Allwinner A13

  1. #131
    Ушел в ЛАС Технический директор Array Репутация: лучше не знать Аватар для HoSStiA
    Регистрация
    11.01.2004
    Город/село
    Столиця
    Сообщений
    13,050
    Спасибо (Раздал)
    11289
    Спасибо (Получил)
    14942

    Re: Андроид зеркало на Allwinner A13

    Несколько недель изысканий, и реализация низкоуровневых поканальных задержек для устройств на Allwinner A13 (в т.ч. и этого зеркала) привела к, на удивление (!), весьма компактному коду, легко портируемому на практически любые устройства, в т.ч. и на такие, где надстройка ALSA не предусмотрена вообще.

    Поканальные задержки внедрены непосредственно в обработчик выходного потока, перед отправкой в буфер PCM. Сначала планировал реализовать это, расширив библиотеку speex, из которой сам Андроид активно использует ресемплер, но в итоге быстрее оказалось решить задачу на более "низком" уровне.

    Есть еще на чем поработать, в частности нужно внимательно проверить стыковки при смене буфера, но это уже в процессе "эксплуатации".

    Значения задержек в секундах (можно использовать дробные значения) необходимо поместить в файл /etc/audio_delays.conf, по одному числу на каждую строку для каждого канала последовательно, т.е., к примеру:
    Код:
    0.245678
    0.019735325
    установят задержку 0.245678 сек на левый канал, и 0.019735325 на правый канал.

    Все изменения от предыдущих релизов сосредоточены в библиотеке /system/lib/hw/audio.primary.exDroid.so.


    Код:
    diff -r 81bbd579644e softwinner/pmp3670b/libraries/audio/audio_hw.c
    --- a/softwinner/pmp3670b/libraries/audio/audio_hw.c	Fri Oct 24 19:23:15 2014 +0400
    +++ b/softwinner/pmp3670b/libraries/audio/audio_hw.c	Sat Oct 25 11:25:12 2014 +0400
    @@ -22,6 +22,7 @@
     #include <stdint.h>
     #include <sys/time.h>
     #include <sys/stat.h>
    +#include <stdio.h>
     #include <stdlib.h>
     
     #include <cutils/log.h>
    @@ -239,7 +240,7 @@
         },
     	{
     		.ctl_name = NULL,
    -	},
    +		},
     };
     
     struct route_setting line_in_rec_routing[] = {
    @@ -372,6 +373,8 @@
         struct echo_reference_itfe *echo_reference;
         struct sunxi_audio_device *dev;
         int write_threshold;
    +    unsigned long *channel_delay;	
    +    char **delay_chunk;
     };
     
     #define MAX_PREPROCESSORS 3 /* maximum one AGC + one NS + one AEC per input stream */
    @@ -783,6 +786,51 @@
         }
     }
     
    +static unsigned int audio_format_to_bytes(enum pcm_format format)
    +{
    +    switch (format) {
    +    case PCM_FORMAT_S32_LE:
    +    case PCM_FORMAT_S24_LE:
    +        return 32 >> 3;
    +    default:
    +    case PCM_FORMAT_S16_LE:
    +        return 16 >> 3;
    +    };
    +}
    +
    +static unsigned long get_delay_config (unsigned short channel, uint32_t rate) {
    +	unsigned long delay = 0;
    +
    +	FILE * fp ;
    +	
    +	size_t MAXLINE = 12;
    +	char line[MAXLINE];
    +
    +	unsigned short current_channel = 0;
    +	char filename[] = "/etc/audio_delays.conf";
    +
    +	fp = fopen(filename, "r");
    +
    +	if(fp != NULL){
    +    		while(!feof(fp)){
    +			fgets(line, MAXLINE, fp);
    +         		if (current_channel == channel) {
    +				delay = (unsigned long)(atof(line) * rate);
    +				break;
    +			}
    +			current_channel++;
    +   	 	}
    +	} else {
    +    	       delay = 0;
    +	}
    +	
    +	if (fp != NULL) {
    +	       fclose(fp);
    +	}
    +
    +       return delay;
    +}
    +
     /* must be called with hw device and output stream mutexes locked */
     static int start_output_stream(struct sunxi_stream_out *out)
     {
    @@ -891,7 +939,19 @@
         out->write_threshold = PLAYBACK_PERIOD_COUNT * LONG_PERIOD_SIZE;
         out->config.start_threshold = SHORT_PERIOD_SIZE * 2;
         out->config.avail_min = LONG_PERIOD_SIZE;
    -	
    +
    +    unsigned long delay_config[out->config.channels];
    +    unsigned short channel;
    +    char *delay_buffer[out->config.channels];
    +
    +    for (channel = 0; channel < out->config.channels; channel++) { 
    +        delay_config[channel] = get_delay_config(channel, out->config.rate);
    +	delay_buffer[channel] = malloc(delay_config[channel] * audio_format_to_bytes(out->config.format));
    +	memset(delay_buffer[channel],0,delay_config[channel] * audio_format_to_bytes(out->config.format));
    +    }
    +
    +    out->channel_delay = delay_config;
    +    out->delay_chunk = delay_buffer;
         LOGD("start_output_stream: card:%d, port:%d, rate:%d", card, port, out->config.rate);
     
     //    out->pcm = pcm_open_req(card, port, PCM_OUT | PCM_MMAP | PCM_NOIRQ, &out->config, DEFAULT_OUT_SAMPLING_RATE);
    @@ -1279,6 +1339,40 @@
         out->config.avail_min = SHORT_PERIOD_SIZE;
     	pcm_set_avail_min(out->pcm, out->config.avail_min);
     
    +    /* applay delays per channel */
    +    unsigned short current_channel = 0;
    +    unsigned long max_delay_range = 0;
    +	
    +	/* check at least one channel delay present */
    +    while(current_channel < out->config.channels) {
    +	if (out->channel_delay[current_channel] > max_delay_range)
    +		max_delay_range = out->channel_delay[current_channel];
    +	current_channel++;
    +    }
    +
    +    if (max_delay_range > 0) {
    +    	size_t current_frame, current_offset;
    +    	size_t bytes_in_frame = frame_size/out->config.channels;
    +    	char *c, *cc;
    +	
    +    	cc = malloc(bytes_in_frame);
    +	/* shift data in each channel frame by frame */
    +    	for(current_frame = 0, current_offset = 0;
    +			   current_frame < in_frames; 
    +			   current_frame++, current_offset += frame_size) {
    +		for(current_channel = 0; current_channel < out->config.channels; current_channel++) {
    +			if (out->channel_delay[current_channel] > 0) {
    +				c = (char *)buffer + current_offset + current_channel*bytes_in_frame;
    +
    +				memcpy(cc, c, bytes_in_frame);
    +				memcpy(c, out->delay_chunk[current_channel], bytes_in_frame);
    +				memmove(out->delay_chunk[current_channel],out->delay_chunk[current_channel]+bytes_in_frame,(out->channel_delay[current_channel]-1)*bytes_in_frame);
    +				memcpy(out->delay_chunk[current_channel]+(out->channel_delay[current_channel]-1)*bytes_in_frame, cc, bytes_in_frame);
    +			}	
    +		}
    +    	}
    +    }
    +
         /* only use resampler if required */
         if (out->resampler) {
             out->resampler->resample_from_input(out->resampler,
    @@ -2099,7 +2193,7 @@
         *sample_rate = out_get_sample_rate(&out->stream.common);
     
     	LOGV("+++++++++++++++ adev_open_output_stream: req_sample_rate: %d, fmt: %x, channel_count: %d",
    -		*sample_rate, *format, *channels);
    +		*sample_rate, *format, *channels); 
     
         *stream_out = &out->stream;
         return 0;
    @@ -2120,6 +2214,8 @@
             free(out->buffer);
         if (out->resampler)
             release_resampler(out->resampler);
    +    if (out->delay_chunk)
    +	free(out->delay_chunk);
         free(stream);
     }


    Вложения

  2. # 0+

    Если Вы впервые на нашем Форуме:

    1. Обратите внимание на список полезных тем в первом сообщении.
    2. Термины и наиболее популярные модели в сообщениях подсвечиваются быстрыми подсказками и ссылками на соответствующие статьи в МагВикипедии и Каталоге.
    3. Для изучения Форума не обязательно регистрироваться - практически весь профильный контент, включая файлы, картинки и видео, открыты для гостей.

    С наилучшими пожеланиями,
    Администрация Форума автозвука Магнитола


     

  3. #132
    Ушел в ЛАС Технический директор Array Репутация: лучше не знать Аватар для HoSStiA
    Регистрация
    11.01.2004
    Город/село
    Столиця
    Сообщений
    13,050
    Спасибо (Раздал)
    11289
    Спасибо (Получил)
    14942

    Re: Андроид зеркало на Allwinner A13

    Для популяризации топика открываю доступ к репозиториям с исходным кодом этого проекта на BitBucket.
    https://bitbucket.org/HoSStiA/allwinner-a13-sdk/

    Для получения локальной копии необходимы навыки работы с системой Mercurial: http://mercurial.ru/ , https://ru.wikipedia.org/wiki/Mercurial
    Репозитории содержат полный код Android 4.0 и ядра Linux 3.0.8, адаптированные к sun5i ARMv7 Processor Allwinner A13 и BoxChip A13.
    Ввиду большого объема и ограничений системы 2 Gb на отдельный репозиторий, используется иерархическая структура для массивных разделов кода и инструментов для сборки.
    Для начальной синхронизации с удаленным хранилищем рекомендую вначале выполнить:
    Код:
    hg clone https://bitbucket.org/HoSStiA/allwinner-a13-sdk
    , затем заменить содержимое .hgsub в корне на
    Код:
    lichee/linux-3.0=https://bitbucket.org/HoSStiA/a13-linux-3.0
    android4.0/external=https://bitbucket.org/HoSStiA/a13_platform_external
    android4.0/prebuilt=https://bitbucket.org/HoSStiA/a13_platform_prebuilt
    android4.0/frameworks=https://bitbucket.org/HoSStiA/HoSStiA/a13_platform_frameworks
    lichee/buildroot=https://bitbucket.org/HoSStiA/a13_lichee_buildroot
    android4.0/device=https://bitbucket.org/HoSStiA/a13_sdk_devices
    и затянуть оставшиеся репозитории при помощи
    Код:
    hg pull -u
    Синхронизация по HTTPS с BitBucket займет порядка 6-10 часов.


  4. #133
    Ушел в монастырь Начальник смены
    Репутация
    Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Репутация: 581468
    Регистрация
    15.01.2010
    Город/село
    Alma-Ata
    Сообщений
    2,825
    Спасибо (Раздал)
    22578
    Спасибо (Получил)
    19541

    Re: Андроид зеркало на Allwinner A13

    Чой-то сильно греется. Ладно, сейчас ноябрь, а чё летом буит?

    После прочтения съесть!



    Это я ещё жыпыэс не подключил.


  5. #134
    Новичок Соискатель
    Репутация
    Репутация: 0
    Регистрация
    12.11.2014
    Город/село
    Курск
    Сообщений
    2
    Спасибо (Раздал)
    1
    Спасибо (Получил)
    0

    Печаль Re: Андроид зеркало на Allwinner A13

    Здравствуйте! Купил себе на алиэкспресс вот такое зеркало

    Нажмите на изображение для увеличения
Название: 2014-new-5-Rearview-mirror-gps-Android-gps-Car-camera-DVR-GPS-Navigation-Wifi-av-in.jpg
Просмотров: 254
Размер:	22.2 Кб
ID:	670268

    Собственно брал я его для того чтобы реализовать давнюю мечту о бесстрашной парковке задом. Три года я парковался по ощущениям, но точности данного метода мне не всегда хватает для уверенной параллельной парковки в суровой городской среде. Данный сабж понравился своей универсальностью, все функции которыми я пользовался на разных устройствах теперь в одном корпусе, и не свисает никаких гроздьев проводов. Есть вот только в нем один минус который не дает мне расслабиться, - через некоторое время после того как выключается экран, fireye (авторегистратор) виснет намертво до следущей перезагрузки, приходится спохватываться за рулем и вовремя нажимать на левую кнопку, которая включает и выключает экран.

    Вот здесь один хороший человек написал, что надо поменять прошивку и болезнь уйдет навсегда, можно даже гасить экран и регистратор будет все исправно записывать без последствий. Я скачал прошивку любезно выложенную этим хорошим человеком, но не одним из методов описанных в сети не смог перепрошить свое зеркало. Пробовал готовить флешку через PhoenixCard, по инструкции. Сама флешка (у меня 16Гб) записалась нормально, затык возник не последнем пункте:

    Вставляем карту памяти в устройство(планшет должен быть
    предварительно выключен полностью). Включаем устройство – появится красный прогресс бар, по окончании
    появится надпись об успешном обновлении. Извлекаем карту памяти и включаем планшет.
    Ну не появилось у меня никакого красного прогресс бара, что интересно андроид не стартовал как обычно, после нажатия загорелась средняя кнопка как обычно и все, - черный экран. Сколько я не ждал признаков жизни, так и не дождался. Нормально запустился после того как отформатировал флешку.

    Пробовал я и через LiveSuit, опять неудача смонтировал образ, установил драйвера, а как включить зеркало в режим прошивки я не знаю. Нажимал все мои три кнопки и по одной и комбинациями, но прошивка так и не пошла, хотя драйвера вроде стали.

    Помогите друзья, как прошить это капризное зеркало?


  6. #135
    Ушел в ЛАС Технический директор Array Репутация: лучше не знать Аватар для HoSStiA
    Регистрация
    11.01.2004
    Город/село
    Столиця
    Сообщений
    13,050
    Спасибо (Раздал)
    11289
    Спасибо (Получил)
    14942

    Re: Андроид зеркало на Allwinner A13

    SlamLayer, видимо у вас разные начинки и процессоры в зеркалах. У человека, поделившегося прошивкой - Allwinner A10 (как на картинке), а в характеристиках вашего с АлиЭкспресс:
    Двухъядерный процессор Allwinner A13 Cortex A8 с тактовой частотой 1 ГГц
    , хотя и A13, и A10 - одноядерные. Упаковки на фотографиях также различаются. Необходимо искать прошивку именно для своего (запросить у производителя, либо искать среди прошивок в зеркалах). Попробуйте для начала и прошивку от зеркала ТС (выложена где-то в теме), но вероятность 1:100, что повезет.

    Прошиваться сначала придется только через SD-карту, т.к. необходимо восстановить испорченную структуру системных разделов на внутренней флешке (у A13 и A10 они различаются).


  7. #136
    Новичок Соискатель
    Репутация
    Репутация: 0
    Регистрация
    12.11.2014
    Город/село
    Курск
    Сообщений
    2
    Спасибо (Раздал)
    1
    Спасибо (Получил)
    0

    Re: Андроид зеркало на Allwinner A13

    Совсем забыл упомянуть, что я пробовал 2 прошивки, второй была вот эта sun5i_android_pe11_0004_hongchuang_2014612.img. Результат одинаковый(

    Прошиваться сначала придется только через SD-карту, т.к. необходимо восстановить испорченную структуру системных разделов на внутренней флешке (у A13 и A10 они различаются).
    Моя текущая прошивка никаким образом не повреждена, все работает как работало. Новые прошивки даже устанавливаться не захотели, - мне так и не удалось войти в режим прошивки. Я форматировал флешку, чтобы она перестала быть загрузочной и андроид нормально стартовал.

    Посмотрел у себя в зеркале, у меня вот такой номер сборки crane_cvr_eng 4.0.4 IMM 76 D 20140317 test-keys


  8. #137
    Ушел в ЛАС Технический директор Array Репутация: лучше не знать Аватар для HoSStiA
    Регистрация
    11.01.2004
    Город/село
    Столиця
    Сообщений
    13,050
    Спасибо (Раздал)
    11289
    Спасибо (Получил)
    14942

    Re: Андроид зеркало на Allwinner A13

    Это намного все упрощает.

    Только для начала обязательно сделайте бэкапы текущей прошивки (лучше взять другую SD, причем медленную, category 4 или category 6) к примеру.
    Заодно и поймете, грузится ли что-нибудь с SD вообще.
    Цитата Сообщение от HoSStiA Посмотреть сообщение
    Образ Gentoo SD:
    http://4pda.ru/pages/go/?u=http%3A%2...F2AWJbja89VKmM
    Создание Gentoo flash:
    http://ublaze.ru/forum/topic1232-1520.html - Восстановление прошивки на планшетах с Процессором Alwinner A13
    А потом уже пробуйте перепрошить зеркало, сохранив эти бэкапы в надежном месте.

    ---------- Сообщение добавлено 12.11.2014 в 15:14 ----------

    P.S.: для прошивки с SD-карты достаточно правильно её записать согласно инструкциям: Андроид зеркало на Allwinner A13
    Планшет сам войдет в нужный режим при перезагрузке с ней.


  9. #138
    Новичок Соискатель
    Репутация
    Репутация: 0
    Регистрация
    29.08.2014
    Город/село
    ghtuytu
    Сообщений
    2
    Спасибо (Раздал)
    0
    Спасибо (Получил)
    0

    Re: Андроид зеркало на Allwinner A13

    Люди добрые! Скиньте пжл фото внутренний части со стороны (тач скрина)зеркало,просто там красный провод отпаялся,и я не знаю откуда. Спасибо


  10. #139
    маХЕРовый Начальник смены Array Репутация: лучше не знать Аватар для Rover
    Регистрация
    05.06.2006
    Город/село
    г. Жуковский
    Сообщений
    1,851
    Спасибо (Раздал)
    848
    Спасибо (Получил)
    4412
    Автор

    Re: Андроид зеркало на Allwinner A13

    В первой странице поста я вроде фото потрохов выкладывал, не то?

    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: DSC02023.jpg
Просмотров: 0
Размер:	228.2 Кб
ID:	691458   Нажмите на изображение для увеличения
Название: DSC02024.jpg
Просмотров: 0
Размер:	241.3 Кб
ID:	691460  

  11. #140
    Энтузиаст Стажер
    Репутация
    Репутация: 21
    Регистрация
    06.06.2015
    Город/село
    Braynsk
    Сообщений
    10
    Спасибо (Раздал)
    0
    Спасибо (Получил)
    3

    Re: Андроид зеркало на Allwinner A13

    Доброго времени суток!!! Парни у кого есть прошивка при которой данный девайс запускается при подаче питания.
    Спасибо!!!


Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
  cc by-nc-sa