diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/plugins/mp3_encoder.c | 70 |
1 files changed, 41 insertions, 29 deletions
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c index c84e158aa1..813302a9e4 100644 --- a/apps/plugins/mp3_encoder.c +++ b/apps/plugins/mp3_encoder.c | |||
@@ -1334,11 +1334,7 @@ void mdct_int( int *in, int *out ) | |||
1334 | 1334 | ||
1335 | for(m=18; m--; ) | 1335 | for(m=18; m--; ) |
1336 | { | 1336 | { |
1337 | #ifdef SIMULATOR | 1337 | #ifdef CPU_COLDFIRE |
1338 | int k; | ||
1339 | for(k=36,tmp=0; k--; ) | ||
1340 | tmp += in[k] * win_int[m][k]; | ||
1341 | #else | ||
1342 | asm volatile ("move.l #0, %macsr"); /* integer mode */ | 1338 | asm volatile ("move.l #0, %macsr"); /* integer mode */ |
1343 | 1339 | ||
1344 | { int *wint = win_int[m]; | 1340 | { int *wint = win_int[m]; |
@@ -1391,6 +1387,10 @@ void mdct_int( int *in, int *out ) | |||
1391 | : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a5"); | 1387 | : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a5"); |
1392 | } | 1388 | } |
1393 | asm volatile ("movclr.l %%acc0, %[tmp]\n" : [tmp]"+r"(tmp) ); | 1389 | asm volatile ("movclr.l %%acc0, %[tmp]\n" : [tmp]"+r"(tmp) ); |
1390 | #else | ||
1391 | int k; | ||
1392 | for(k=36,tmp=0; k--; ) | ||
1393 | tmp += in[k] * win_int[m][k]; | ||
1394 | #endif | 1394 | #endif |
1395 | out[m] = (tmp + 16384) >> 15; | 1395 | out[m] = (tmp + 16384) >> 15; |
1396 | } | 1396 | } |
@@ -1442,7 +1442,7 @@ void filter_subband(short *buffer, int s[SBLIMIT], int k) | |||
1442 | { | 1442 | { |
1443 | short *enwindow = enwindow_int; | 1443 | short *enwindow = enwindow_int; |
1444 | int i, j, tmp = 0; | 1444 | int i, j, tmp = 0; |
1445 | #ifndef SIMULATOR | 1445 | #ifdef CPU_COLDFIRE |
1446 | int reg_buff[14]; /* register storage buffer */ | 1446 | int reg_buff[14]; /* register storage buffer */ |
1447 | #endif | 1447 | #endif |
1448 | 1448 | ||
@@ -1463,14 +1463,7 @@ void filter_subband(short *buffer, int s[SBLIMIT], int k) | |||
1463 | } | 1463 | } |
1464 | 1464 | ||
1465 | /* 36864=72*512: shift samples into proper window positions */ | 1465 | /* 36864=72*512: shift samples into proper window positions */ |
1466 | #ifdef SIMULATOR | 1466 | #ifdef CPU_COLDFIRE |
1467 | for(i=0; i<64; i++) | ||
1468 | { | ||
1469 | for(j=0, tmp=0; j<512; j+=64) | ||
1470 | tmp += (int)x_int[k][(i+0+j+off[k])&(HAN_SIZE-1)] * (int)*(enwindow++); | ||
1471 | y_int[i] = (short)((tmp + (1<<18)) >> 19); | ||
1472 | } | ||
1473 | #else | ||
1474 | { short *xint = &x_int[k][off[k]]; | 1467 | { short *xint = &x_int[k][off[k]]; |
1475 | short *yint = y_int; | 1468 | short *yint = y_int; |
1476 | 1469 | ||
@@ -1534,6 +1527,13 @@ void filter_subband(short *buffer, int s[SBLIMIT], int k) | |||
1534 | 1527 | ||
1535 | asm volatile ("movem.l (%0),%%d0/%%d2-%%d7/%%a2-%%a7\n" : : "a" (reg_buff) : "d0"); | 1528 | asm volatile ("movem.l (%0),%%d0/%%d2-%%d7/%%a2-%%a7\n" : : "a" (reg_buff) : "d0"); |
1536 | } | 1529 | } |
1530 | #else | ||
1531 | for(i=0; i<64; i++) | ||
1532 | { | ||
1533 | for(j=0, tmp=0; j<512; j+=64) | ||
1534 | tmp += (int)x_int[k][(i+0+j+off[k])&(HAN_SIZE-1)] * (int)*(enwindow++); | ||
1535 | y_int[i] = (short)((tmp + (1<<18)) >> 19); | ||
1536 | } | ||
1537 | #endif | 1537 | #endif |
1538 | 1538 | ||
1539 | /* 147456=72*2048 */ | 1539 | /* 147456=72*2048 */ |
@@ -1541,10 +1541,7 @@ void filter_subband(short *buffer, int s[SBLIMIT], int k) | |||
1541 | { | 1541 | { |
1542 | short *filt = filter_int[i]; | 1542 | short *filt = filter_int[i]; |
1543 | 1543 | ||
1544 | #ifdef SIMULATOR | 1544 | #ifdef CPU_COLDFIRE |
1545 | for(j=64, tmp=0; j--; ) | ||
1546 | tmp += (long)filt[j] * (long)y_int[j]; | ||
1547 | #else | ||
1548 | asm volatile ("move.l #0, %macsr"); /* integer mode */ | 1545 | asm volatile ("move.l #0, %macsr"); /* integer mode */ |
1549 | { | 1546 | { |
1550 | asm volatile( | 1547 | asm volatile( |
@@ -1623,6 +1620,9 @@ void filter_subband(short *buffer, int s[SBLIMIT], int k) | |||
1623 | 1620 | ||
1624 | asm volatile ("movclr.l %%acc0, %[tmp]\n" : [tmp]"+r"(tmp) ); | 1621 | asm volatile ("movclr.l %%acc0, %[tmp]\n" : [tmp]"+r"(tmp) ); |
1625 | } | 1622 | } |
1623 | #else | ||
1624 | for(j=64, tmp=0; j--; ) | ||
1625 | tmp += (long)filt[j] * (long)y_int[j]; | ||
1626 | #endif | 1626 | #endif |
1627 | s[i] = (tmp + 16384) >> 15; | 1627 | s[i] = (tmp + 16384) >> 15; |
1628 | } | 1628 | } |
@@ -1878,6 +1878,18 @@ char *get_mp3_filename(char *wav_name) | |||
1878 | return mp3_name; | 1878 | return mp3_name; |
1879 | } | 1879 | } |
1880 | 1880 | ||
1881 | #if CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD | ||
1882 | #define MP3ENC_PREV BUTTON_UP | ||
1883 | #define MP3ENC_NEXT BUTTON_DOWN | ||
1884 | #define MP3ENC_DONE BUTTON_OFF | ||
1885 | #define MP3ENC_SELECT BUTTON_SELECT | ||
1886 | #elif CONFIG_KEYPAD == IPOD_4G_PAD | ||
1887 | #define MP3ENC_PREV BUTTON_SCROLL_BACK | ||
1888 | #define MP3ENC_NEXT BUTTON_SCROLL_FWD | ||
1889 | #define MP3ENC_DONE BUTTON_MENU | ||
1890 | #define MP3ENC_SELECT BUTTON_SELECT | ||
1891 | #endif | ||
1892 | |||
1881 | enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | 1893 | enum plugin_status plugin_start(struct plugin_api* api, void* parameter) |
1882 | { | 1894 | { |
1883 | int fil, sfil, nfil; /* for file selection */ | 1895 | int fil, sfil, nfil; /* for file selection */ |
@@ -1895,7 +1907,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
1895 | 1907 | ||
1896 | rb->lcd_setfont(FONT_SYSFIXED); | 1908 | rb->lcd_setfont(FONT_SYSFIXED); |
1897 | 1909 | ||
1898 | #ifndef SIMULATOR | 1910 | #ifdef HAVE_ADJUSTABLE_CPU_FREQ |
1899 | rb->cpu_boost(true); | 1911 | rb->cpu_boost(true); |
1900 | #endif | 1912 | #endif |
1901 | rb->button_clear_queue(); | 1913 | rb->button_clear_queue(); |
@@ -1907,13 +1919,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
1907 | sfil = 0; /* set first file as default */ | 1919 | sfil = 0; /* set first file as default */ |
1908 | cont = 1; | 1920 | cont = 1; |
1909 | 1921 | ||
1910 | while(cont && (butt = rb->button_get_w_tmo(HZ/10)) != BUTTON_RIGHT) | 1922 | while(cont && (butt = rb->button_get_w_tmo(HZ/10)) != MP3ENC_SELECT) |
1911 | { | 1923 | { |
1912 | switch(butt) | 1924 | switch(butt) |
1913 | { | 1925 | { |
1914 | case BUTTON_OFF: cont = 0; break; | 1926 | case MP3ENC_DONE: cont = 0; break; |
1915 | case BUTTON_UP: if(sfil > 0 ) sfil--; break; | 1927 | case MP3ENC_PREV: if(sfil > 0 ) sfil--; break; |
1916 | case BUTTON_DOWN: if(sfil < nfil) sfil++; break; | 1928 | case MP3ENC_NEXT: if(sfil < nfil) sfil++; break; |
1917 | } | 1929 | } |
1918 | 1930 | ||
1919 | rb->lcd_clear_display(); | 1931 | rb->lcd_clear_display(); |
@@ -1930,13 +1942,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
1930 | nrat = 9; | 1942 | nrat = 9; |
1931 | srat = 4; /* set 128kBit as default */ | 1943 | srat = 4; /* set 128kBit as default */ |
1932 | 1944 | ||
1933 | while(cont && (butt = rb->button_get_w_tmo(HZ/10)) != BUTTON_RIGHT) | 1945 | while(cont && (butt = rb->button_get_w_tmo(HZ/10)) != MP3ENC_SELECT) |
1934 | { | 1946 | { |
1935 | switch(butt) | 1947 | switch(butt) |
1936 | { | 1948 | { |
1937 | case BUTTON_OFF: cont = 0; break; | 1949 | case MP3ENC_DONE: cont = 0; break; |
1938 | case BUTTON_UP: if(srat > 0 ) srat--; break; | 1950 | case MP3ENC_PREV: if(srat > 0 ) srat--; break; |
1939 | case BUTTON_DOWN: if(srat < nrat) srat++; break; | 1951 | case MP3ENC_NEXT: if(srat < nrat) srat++; break; |
1940 | } | 1952 | } |
1941 | 1953 | ||
1942 | rb->lcd_clear_display(); | 1954 | rb->lcd_clear_display(); |
@@ -1952,7 +1964,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
1952 | 1964 | ||
1953 | config.infile = filename[sfil]; | 1965 | config.infile = filename[sfil]; |
1954 | config.outfile = get_mp3_filename(filename[sfil]); | 1966 | config.outfile = get_mp3_filename(filename[sfil]); |
1955 | #ifdef SIMULATOR | 1967 | #ifdef ROCKBOX_LITTLE_ENDIAN |
1956 | config.byte_order = order_littleEndian; | 1968 | config.byte_order = order_littleEndian; |
1957 | #else | 1969 | #else |
1958 | config.byte_order = order_bigEndian; | 1970 | config.byte_order = order_bigEndian; |
@@ -2001,7 +2013,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
2001 | } | 2013 | } |
2002 | 2014 | ||
2003 | rb->lcd_setfont(FONT_UI); | 2015 | rb->lcd_setfont(FONT_UI); |
2004 | #ifndef SIMULATOR | 2016 | #ifdef HAVE_ADJUSTABLE_CPU_FREQ |
2005 | rb->cpu_boost(false); | 2017 | rb->cpu_boost(false); |
2006 | #endif | 2018 | #endif |
2007 | return PLUGIN_OK; | 2019 | return PLUGIN_OK; |