Этот конкретный случай стоит рассмотреть на 4pda
Вид для печати
Всё таки наш форум с уклоном в музыку. И когда речь идёт про висящие провода, ФМ трансмиттеры, это точно не сюды, и обсуждать подобную хню, право же не стоит.
Про такую штуку слыхали? :
Вложение 648918
http://bewith-audio.ru/?page_id=83
Полюбопытствуйтесь ценником, понравиЦЦа)))
Сделать из китайца Mirror Media для нищебродов, с качеством звука не хуже, это задачка интересная.
Плеером в зеркале управлять вполне удобно, провода никакие не висят - я сделал один провод, сразу же уходящий под обшивку потолка, его не видно. USB разъём для флешки можно вмонтировать в любое удобное место - саму флешку в зеркало втыкать - глупость последняя. Честных 44.1/16 в цифре без ресемплинга я получил, далее - хоть куды. С Божьей помощью (Сань, будешь читать, не возгордись :) ) если удастся ввести регулируемые задержки в каналы, то и никаких процев и пуристских "машин времени" будет ненадо - впихнул цифру в DAC 41, задержал левый канал на 3м, а правый на 2м и ФСЁ!!!! мечта аудиофила - безпроцевая система с бабой посерёдке :)
Вот для меня лично - видеорегистрация и навигация - это приятственные бонусы к ЗВУКУ а не наоборот.
Rover
Да вот и я про тоже - Вам удалось прикрутить флешку к Вашему зеркалу, Ваше зеркало имеет проц А13.
Вот и мне хочется, чтобы моё зеркало на проце А10 также играло музыку с флешки.
А ведь обновленная версия такой штуки существует.
http://gpsnew.ru/222/new-android-shi...fi-probki.html
Rover
Здравствуйте.
Пожалуйста, если у Вас есть возможность, поделитесь со мною файлом-установочником *.apk программы-видеорегистратора с Вашего зеркала, вот этой программой - отсюда http://magnitola.org/usb-audio-dac-a...inner-a13.html после слов
Спасибо.Цитата:
Видеорегистратор. Пишет Video: MPEG4 Video (H264) 1280x720Audio: AAC 8000Hz mono 128kbps ролик 3 минуты примерно 180 Мбт. Вроде есть датчик шока (не проверял), привязка к GPS, какой-то эконоичный режим. К видерегистратору обязательно вернусь позже.
Вот здесь ВСЕ программы, установленные в зеркале, в т.ч. и видеорегистратор.
https://yadi.sk/d/Fx6OJqXpc6mVG
Несколько недель изысканий, и реализация низкоуровневых поканальных задержек для устройств на 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);
}
Для популяризации топика открываю доступ к репозиториям с исходным кодом этого проекта на 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 на отдельный репозиторий, используется иерархическая структура для массивных разделов кода и инструментов для сборки.
Для начальной синхронизации с удаленным хранилищем рекомендую вначале выполнить:
, затем заменить содержимое .hgsub в корне наКод:hg clone https://bitbucket.org/HoSStiA/allwinner-a13-sdk
и затянуть оставшиеся репозитории при помощиКод: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
Синхронизация по HTTPS с BitBucket займет порядка 6-10 часов.Код:hg pull -u
Чой-то сильно греется. Ладно, сейчас ноябрь, а чё летом буит?
Это я ещё жыпыэс не подключил.
Здравствуйте! Купил себе на алиэкспресс вот такое зеркало
Вложение 670268
Собственно брал я его для того чтобы реализовать давнюю мечту о бесстрашной парковке задом. Три года я парковался по ощущениям, но точности данного метода мне не всегда хватает для уверенной параллельной парковки в суровой городской среде. Данный сабж понравился своей универсальностью, все функции которыми я пользовался на разных устройствах теперь в одном корпусе, и не свисает никаких гроздьев проводов. Есть вот только в нем один минус который не дает мне расслабиться, - через некоторое время после того как выключается экран, fireye (авторегистратор) виснет намертво до следущей перезагрузки, приходится спохватываться за рулем и вовремя нажимать на левую кнопку, которая включает и выключает экран.
Вот здесь один хороший человек написал, что надо поменять прошивку и болезнь уйдет навсегда, можно даже гасить экран и регистратор будет все исправно записывать без последствий. Я скачал прошивку любезно выложенную этим хорошим человеком, но не одним из методов описанных в сети не смог перепрошить свое зеркало. Пробовал готовить флешку через PhoenixCard, по инструкции. Сама флешка (у меня 16Гб) записалась нормально, затык возник не последнем пункте:
Ну не появилось у меня никакого красного прогресс бара:this:, что интересно андроид не стартовал как обычно, после нажатия загорелась средняя кнопка как обычно и все, - черный экран. Сколько я не ждал признаков жизни, так и не дождался. Нормально запустился после того как отформатировал флешку.Цитата:
Вставляем карту памяти в устройство(планшет должен быть
предварительно выключен полностью). Включаем устройство – появится красный прогресс бар, по окончании
появится надпись об успешном обновлении. Извлекаем карту памяти и включаем планшет.
Пробовал я и через LiveSuit, опять неудача смонтировал образ, установил драйвера, а как включить зеркало в режим прошивки я не знаю. Нажимал все мои три кнопки и по одной и комбинациями, но прошивка так и не пошла, хотя драйвера вроде стали.
Помогите друзья, как прошить это капризное зеркало?:sorry:
SlamLayer, видимо у вас разные начинки и процессоры в зеркалах. У человека, поделившегося прошивкой - Allwinner A10 (как на картинке), а в характеристиках вашего с АлиЭкспресс:
, хотя и A13, и A10 - одноядерные. Упаковки на фотографиях также различаются. Необходимо искать прошивку именно для своего (запросить у производителя, либо искать среди прошивок в зеркалах). Попробуйте для начала и прошивку от зеркала ТС (выложена где-то в теме), но вероятность 1:100, что повезет.Цитата:
Двухъядерный процессор Allwinner A13 Cortex A8 с тактовой частотой 1 ГГц
Прошиваться сначала придется только через SD-карту, т.к. необходимо восстановить испорченную структуру системных разделов на внутренней флешке (у A13 и A10 они различаются).
Совсем забыл упомянуть, что я пробовал 2 прошивки, второй была вот эта sun5i_android_pe11_0004_hongchuang_2014612.img. Результат одинаковый(
Моя текущая прошивка никаким образом не повреждена, все работает как работало. Новые прошивки даже устанавливаться не захотели, - мне так и не удалось войти в режим прошивки. Я форматировал флешку, чтобы она перестала быть загрузочной и андроид нормально стартовал.Цитата:
Прошиваться сначала придется только через SD-карту, т.к. необходимо восстановить испорченную структуру системных разделов на внутренней флешке (у A13 и A10 они различаются).
Посмотрел у себя в зеркале, у меня вот такой номер сборки crane_cvr_eng 4.0.4 IMM 76 D 20140317 test-keys
Это намного все упрощает. :)
Только для начала обязательно сделайте бэкапы текущей прошивки (лучше взять другую SD, причем медленную, category 4 или category 6) к примеру.
Заодно и поймете, грузится ли что-нибудь с SD вообще.
А потом уже пробуйте перепрошить зеркало, сохранив эти бэкапы в надежном месте.
---------- Сообщение добавлено 12.11.2014 в 15:14 ----------
P.S.: для прошивки с SD-карты достаточно правильно её записать согласно инструкциям: http://magnitola.org/usb-audio-dac-a...ner-a13-5.html
Планшет сам войдет в нужный режим при перезагрузке с ней.
Люди добрые! Скиньте пжл фото внутренний части со стороны (тач скрина)зеркало,просто там красный провод отпаялся,и я не знаю откуда. Спасибо
В первой странице поста я вроде фото потрохов выкладывал, не то?
Доброго времени суток!!! Парни у кого есть прошивка при которой данный девайс запускается при подаче питания.
Спасибо!!!
Нет времени возиЦЦа с данным девайсом. В авто РС на Win 8.1, Nexus7. Третий девайс уже излишество.
Могу отдать с USB/Spdif конвертером, или 4х канальным процевым УМ. Можно и без них, в канал(ы) есть возможность вводить задержку. Будет интерес, выставлю в теме продаж, не будет - нехай лежит, кашу не ест.
на 4pda.ru нашел тему похожую на наш девайс, Подходят от него прошивки?
Добрый день, у меня иногда при включении экран растягивается и нельзя выключить, т.к. "ОК" выходит за рамки экрана и сенсор не реагирует, также при заполнении флешки видеофайлами выскакивает надпись "SD не включена цикличная прокрутка", не помогает очистка папки видеорегистратора (штатный), приходиться на компе делать форматирование флешки. Можно как-то побороть эти глюки?
по первому вопросу-перепрошивка устройства
по второму-какой класс флешки? еще попробовать снизить порог срабатывания "датчика удара", так как после его срабатывания файлы не удаляются.
удачи!
Спасибо, класс флешки 6, на 10 получаются битые файлы, а цикличность как включить?
можете выложить скрины настроек регистратора? так на память не помню.
Позже выложу.
меню настроекВложение 968108Вложение 968110? прошивка мартовская, версия видеорегистратора carDVR 3.0. Где можно взять по свежея версию?
попробуйте отключить g-сенсор
Отключил, буду тестировать, спасибо, по результатам тестирования отпишусь, а где можно скачать новую версию carDVR?
я думаю ни где.
может кто-нибудь поправит июньскую прошивку? Есть на просторах интернета тема о нашем девайся, например на xda?
Кажется получилось победить тормоза в июньской прошивке, всему виной встроенный видеорегистратор (carDVR ver.3.0.3), заменил его на видеорегистратор из мартовской прошивки (carDVR ver.3.0) и тормоза пропали, еще завтра потестирую и отпишусь, если кому интересно.
конечно интересно!!!
Не получилось побороть тормоза видеорегистратора на июньской прошивке, вернулся на мартовскую.
в чем заключались "тормоза"?
При отключении экрана встроенный видеорегистратор перестаёт записывать и возобновляет работу при нажатии левой кнопки, если его удалить из ОС и установить из мартовской видеорегистратор, он не отключается, как встроенный, но картинка застывает на месте, если несколько раз понажимать левую кнопку в какой-то момент регистраторипросыпается и пишет некоторое время в фоне, но не долго, устанавливал стороние , они не пишут в фоне как и встроенный. Надо, что-то в ОС поправить , но у меня знаний не хватает
Понятно, а чем разбирали прошивку?