A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 67 lines 1.6 kB view raw
1/* 2 * Copyright (C) 1996-1998 Szeredi Miklos 3 * Email: mszeredi@inf.bme.hu 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. See the file COPYING. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 * 19 */ 20 21#include "compr.h" 22 23void compr(void) 24{ 25 int j, c, lc, lled, rep, num; 26 27 rep = 0; 28 29 c = compr_read_byte(); 30 lc = 0; 31 num = 0; 32 33 while(c >= 0) { 34 if(lc == 0xED) lled = 1; 35 else lled = 0; 36 37 lc = c; 38 c = compr_read_byte(); 39 if(c == lc && num != 255 && (!lled || rep)) { 40 if(!rep) { 41 num = 1; 42 rep = 1; 43 } 44 num++; 45 } 46 else { 47 if(rep) { 48 if(num < 5 && lc != 0xED) for(j = 0; j < num; j++) compr_put_byte(lc); 49 else{ 50 compr_put_byte(0xED); 51 compr_put_byte(0xED); 52 compr_put_byte(num); 53 compr_put_byte(lc); 54 num = 0; 55 } 56 rep = 0; 57 } 58 else compr_put_byte(lc); 59 } 60 } 61 62 compr_put_byte(0x00); 63 compr_put_byte(0xED); 64 compr_put_byte(0xED); 65 compr_put_byte(0x00); 66} 67