diff --git a/assets/convert.sh b/assets/convert.sh index 0155021..949b6f0 100644 --- a/assets/convert.sh +++ b/assets/convert.sh @@ -1,27 +1,15 @@ #!/bin/sh -video1="video.mp4" +video1="catch.mp4" palette1="palette1.png" # output1="out_badapple.mp4" -output1="out1/out_%d.bmp" +output1="out/out_%d.bmp" -video2="2d.mp4" -palette2="palette2.png" -output2="out2/out_%d.bmp" -# output="output.mp4" - -filters="scale=256x192:flags=lanczos:force_original_aspect_ratio=decrease,pad=256:192:-1:-1:color=black,fps=30" +filters="scale=256x192:flags=lanczos:force_original_aspect_ratio=decrease,pad=256:192:-1:-1:color=black,fps=24" # video -ffmpeg -i $video1 -vf "$filters,palettegen=max_colors=256:reserve_transparent=0:stats_mode=diff" -y $palette1 -ffmpeg -i $video1 -i $palette1 -filter_complex "$filters[x];[x][1:v]paletteuse=dither=none" -y $output1 +# ffmpeg -i $video1 -vf "$filters,palettegen=max_colors=256:reserve_transparent=0:stats_mode=diff" -y $palette1 +ffmpeg -i $video1 -i $palette1 -filter_complex "$filters[x];[x][1:v]paletteuse=dither=sierra3" -y $output1 # audio -ffmpeg -i $video1 -f s16le -vn -ac 2 -ar 22050 -y music1.raw - -# video -# ffmpeg -i $video2 -vf "$filters,palettegen=max_colors=256:reserve_transparent=0:stats_mode=diff" -y $palette2 -# ffmpeg -i $video2 -i $palette2 -filter_complex "$filters[x];[x][1:v]paletteuse=dither=none" -y $output2 - -# # audio -# ffmpeg -i $video2 -f s16le -vn -ac 2 -ar 22050 -y music2.raw \ No newline at end of file +# ffmpeg -i $video1 -f s16le -vn -ac 2 -ar 22050 -y music1.raw \ No newline at end of file diff --git a/encoder/main.cpp b/encoder/main.cpp index c412bb9..2303113 100644 --- a/encoder/main.cpp +++ b/encoder/main.cpp @@ -208,7 +208,7 @@ int main() { // Convert(ASSETS_PATH "out1/", ASSETS_PATH "palette1.png", "../nitrofs/", "data_fastlz", 1); // Convert(ASSETS_PATH "out1/", ASSETS_PATH "palette1.png", "../nitrofs/", "data_rle", 2); - Convert(ASSETS_PATH "out1/", ASSETS_PATH "palette1.png", "../nitrofs/", "main", 3); + Convert(ASSETS_PATH "out/", ASSETS_PATH "palette1.png", "../nitrofs/", "main", 3); // Convert(ASSETS_PATH "out2/", ASSETS_PATH "palette2.png", "../nitrofs/", "sub"); } diff --git a/src/main.cpp b/src/main.cpp index 1fc7c98..1a93e93 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,14 +26,14 @@ // TODO: hardcode fix #define CHUNK_SIZE 8 -#define FRAMERATE 30 -#define VIDEO_TOTALFRAME 6584 +#define FRAMERATE 24 +#define VIDEO_TOTALFRAME 3268 -#define VIDEO_RBUF_LEN CHUNK_SIZE*6 +#define VIDEO_RBUF_LEN CHUNK_SIZE*8 #define VIDEO_RBUF_BUFFER FRAME_SIZE -#define VIDEO_TEMP_SIZE 96100 +#define VIDEO_TEMP_SIZE 204000 -#define MMSTREAM_BUF_SIZE 16*200 +#define MMSTREAM_BUF_SIZE 800 #define MUSIC_RBUF_SIZE 96000*2 void wait_forever(const char* msg); @@ -313,8 +313,8 @@ int main(void) { { Raylib::nocashMessageFormat("preload audio"); int len = music_rb->GetFree(); - fread(music_rb->GetTail(), len, 1, file_music); - music_rb->Advance(len); + int adv = fread(music_rb->GetTail(), sizeof(char), len, file_music); + music_rb->Advance(adv); Raylib::nocashMessageFormat("preload done"); } @@ -335,10 +335,9 @@ int main(void) { timerStart(0, ClockDivider_1024, TIMER_FREQ_1024(FRAMERATE), TimerCallback); irqSet(IRQ_VBLANK, []{ - printf("\033[3;2H\033[Kno frame: %i\n", noframe); printf("\033[4;2H\033[Kvideo buffer: %i frames\n", videomain_rb->count); printf("\033[5;2H\033[Kmusic buffer: %i bytes\n", music_rb->count); - + if (noframe) printf("\033[6;2H\033[Kno frame: %i\n", noframe); // static int counter = 0; // counter++; @@ -434,6 +433,7 @@ int ThreadMusic(void *arg) { int free = music_rb->GetFree(); int linear = music_rb->LinearWriteSize(); + int adv = 0; // memset(music_buffer_temp, 0, MUSIC_RBUF_SIZE); // fread(music_buffer_temp, free, 1, file_music); @@ -442,17 +442,17 @@ int ThreadMusic(void *arg) if (free < linear) { // memcpy(music_rb->GetTail(), music_buffer_temp, free); - fread(music_rb->GetTail(), 1, free, file_music); + adv += fread(music_rb->GetTail(), 1, free, file_music); } else { // memcpy(music_rb->GetTail(), music_buffer_temp, linear); // memcpy(music_rb->buffer, music_buffer_temp, free-linear); - fread(music_rb->GetTail(), 1, linear, file_music); - fread(music_rb->buffer, 1, free-linear, file_music); + adv += fread(music_rb->GetTail(), 1, linear, file_music); + adv += fread(music_rb->buffer, 1, free-linear, file_music); } - music_rb->Advance(free); + music_rb->Advance(adv); } @@ -538,7 +538,7 @@ mm_word on_stream_request( mm_word length, mm_addr dest, mm_stream_formats forma case MM_STREAM_16BIT_STEREO: samplesize = 4; break; } int len = length*samplesize; - int linear = music_rb->LinearWriteSize(); + int linear = music_rb->LinearReadSize(); // Raylib::nocashMessageFormat("%i", len); @@ -547,33 +547,33 @@ mm_word on_stream_request( mm_word length, mm_addr dest, mm_stream_formats forma // memcpy(dest, music_buffer_temp, len); // return length; - if (len < linear) - { - memcpy(dest, music_rb->GetHead(), len); - music_rb->Skip(len); - return length; - } - else - { - // Raylib::nocashMessageFormat("linear %i", linear); - memcpy(dest, music_rb->GetHead(), linear); - // memcpy((char*)dest+linear, music_rb->buffer, len-linear); - music_rb->Skip(linear); - return linear/samplesize; - } - - // if (len < linear) // { // memcpy(dest, music_rb->GetHead(), len); + // music_rb->Skip(len); + // return length; // } // else // { // // Raylib::nocashMessageFormat("linear %i", linear); // memcpy(dest, music_rb->GetHead(), linear); - // memcpy((char*)dest+linear, music_rb->buffer, len-linear); + // // memcpy((char*)dest+linear, music_rb->buffer, len-linear); + // music_rb->Skip(linear); + // return linear/samplesize; // } - // music_rb->Skip(len); - // return length; + + if (len < linear) + { + memcpy(dest, music_rb->GetHead(), len); + } + else + { + // Raylib::nocashMessageFormat("linear %i", linear); + memcpy(dest, music_rb->GetHead(), linear); + memcpy((char*)dest+linear, music_rb->buffer, len-linear); + } + + music_rb->Skip(len); + return length; } \ No newline at end of file