Форум автозвука и установки музыки в автомобиль
Страница 13 из 17 ПерваяПервая ... 391011121314151617 ПоследняяПоследняя
Показано с 121 по 130 из 177

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

Комбинированный просмотр

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

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

    Всё таки наш форум с уклоном в музыку. И когда речь идёт про висящие провода, ФМ трансмиттеры, это точно не сюды, и обсуждать подобную хню, право же не стоит.
    Про такую штуку слыхали? :

    Нажмите на изображение для увеличения
Название: MM1.jpg
Просмотров: 0
Размер:	116.1 Кб
ID:	648918


    http://bewith-audio.ru/?page_id=83

    Полюбопытствуйтесь ценником, понравиЦЦа

    Сделать из китайца Mirror Media для нищебродов, с качеством звука не хуже, это задачка интересная.
    Плеером в зеркале управлять вполне удобно, провода никакие не висят - я сделал один провод, сразу же уходящий под обшивку потолка, его не видно. USB разъём для флешки можно вмонтировать в любое удобное место - саму флешку в зеркало втыкать - глупость последняя. Честных 44.1/16 в цифре без ресемплинга я получил, далее - хоть куды. С Божьей помощью (Сань, будешь читать, не возгордись ) если удастся ввести регулируемые задержки в каналы, то и никаких процев и пуристских "машин времени" будет ненадо - впихнул цифру в DAC 41, задержал левый канал на 3м, а правый на 2м и ФСЁ!!!! мечта аудиофила - безпроцевая система с бабой посерёдке
    Вот для меня лично - видеорегистрация и навигация - это приятственные бонусы к ЗВУКУ а не наоборот.


  2. #2
    Энтузиаст Стажер
    Репутация
    Репутация: 0
    Регистрация
    26.09.2014
    Город/село
    Липецк
    Сообщений
    20
    Спасибо (Раздал)
    2
    Спасибо (Получил)
    0

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

    Rover
    Да вот и я про тоже - Вам удалось прикрутить флешку к Вашему зеркалу, Ваше зеркало имеет проц А13.
    Вот и мне хочется, чтобы моё зеркало на проце А10 также играло музыку с флешки.


  3. #3
    Энтузиаст Стажер
    Репутация Репутация Репутация Репутация
    Репутация: 525
    Регистрация
    31.03.2014
    Город/село
    Химки
    Сообщений
    13
    Спасибо (Раздал)
    4
    Спасибо (Получил)
    6

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

    Цитата Сообщение от fox proteus Посмотреть сообщение
    Этот конкретный случай стоит рассмотреть на 4pda
    Согласен.
    Проблема в том, что эта тема - похоже, единственная в Рунете, касаемая сабжа.
    Была темка на 4pda, но её выпилили как малопосещаемую.
    Посему, приходится здесь обсуждать, только здесь обитают реальные обладатели.


  4. #4
    Энтузиаст Стажер
    Репутация
    Репутация: 0
    Регистрация
    26.09.2014
    Город/село
    Липецк
    Сообщений
    20
    Спасибо (Раздал)
    2
    Спасибо (Получил)
    0

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

    Цитата Сообщение от Resquer Посмотреть сообщение
    Проблема в том, что эта тема - похоже, единственная в Рунете, касаемая сабжа.
    Была темка на 4pda, но её выпилили как малопосещаемую.
    Посему, приходится здесь обсуждать, только здесь обитают реальные обладатели.
    +1.
    Если бы это зеркало в инете еще где-то допиливали, обсуждали - я бы и там написал где-то.


  5. #5
    Энтузиаст Стажер
    Репутация Репутация Репутация Репутация
    Репутация: 525
    Регистрация
    31.03.2014
    Город/село
    Химки
    Сообщений
    13
    Спасибо (Раздал)
    4
    Спасибо (Получил)
    6

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

    А ведь обновленная версия такой штуки существует.
    http://gpsnew.ru/222/new-android-shi...fi-probki.html


  6. #6
    Энтузиаст Стажер
    Репутация
    Репутация: 0
    Регистрация
    26.09.2014
    Город/село
    Липецк
    Сообщений
    20
    Спасибо (Раздал)
    2
    Спасибо (Получил)
    0

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

    Rover
    Здравствуйте.

    Пожалуйста, если у Вас есть возможность, поделитесь со мною файлом-установочником *.apk программы-видеорегистратора с Вашего зеркала, вот этой программой - отсюда Андроид зеркало на Allwinner A13 после слов
    Видеорегистратор. Пишет Video: MPEG4 Video (H264) 1280x720Audio: AAC 8000Hz mono 128kbps ролик 3 минуты примерно 180 Мбт. Вроде есть датчик шока (не проверял), привязка к GPS, какой-то эконоичный режим. К видерегистратору обязательно вернусь позже.
    Спасибо.


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

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

    Вот здесь ВСЕ программы, установленные в зеркале, в т.ч. и видеорегистратор.
    https://yadi.sk/d/Fx6OJqXpc6mVG


  8. #8
    Энтузиаст Стажер
    Репутация
    Репутация: 0
    Регистрация
    26.09.2014
    Город/село
    Липецк
    Сообщений
    20
    Спасибо (Раздал)
    2
    Спасибо (Получил)
    0

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

    Цитата Сообщение от Rover Посмотреть сообщение
    Вот здесь ВСЕ программы, установленные в зеркале, в т.ч. и видеорегистратор. https://yadi.sk/d/Fx6OJqXpc6mVG
    Большое Вам спасибо.


  9. #9
    Ушел в ЛАС Технический директор 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);
     }


    Вложения

  10. #10
    Ушел в ЛАС Технический директор 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 часов.


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

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

Ваши права

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