yading@11: /* yading@11: * This file is part of FFmpeg. yading@11: * yading@11: * FFmpeg is free software; you can redistribute it and/or yading@11: * modify it under the terms of the GNU Lesser General Public yading@11: * License as published by the Free Software Foundation; either yading@11: * version 2.1 of the License, or (at your option) any later version. yading@11: * yading@11: * FFmpeg is distributed in the hope that it will be useful, yading@11: * but WITHOUT ANY WARRANTY; without even the implied warranty of yading@11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU yading@11: * Lesser General Public License for more details. yading@11: * yading@11: * You should have received a copy of the GNU Lesser General Public yading@11: * License along with FFmpeg; if not, write to the Free Software yading@11: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA yading@11: */ yading@11: yading@11: /* yading@11: * Based on libavutil/base64.c yading@11: */ yading@11: yading@11: #include yading@11: yading@11: int main(void) yading@11: { yading@11: static const char b64[] = yading@11: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; yading@11: unsigned i_bits = 0; yading@11: int i_shift = 0; yading@11: int out_len = 0; yading@11: int in; yading@11: yading@11: #define putb64() \ yading@11: do { \ yading@11: putchar(b64[(i_bits << 6 >> i_shift) & 0x3f]); \ yading@11: out_len++; \ yading@11: i_shift -= 6; \ yading@11: } while (0) yading@11: yading@11: while ((in = getchar()) != EOF) { yading@11: i_bits = (i_bits << 8) + in; yading@11: i_shift += 8; yading@11: while (i_shift > 6) yading@11: putb64(); yading@11: } yading@11: while (i_shift > 0) yading@11: putb64(); yading@11: while (out_len++ & 3) yading@11: putchar('='); yading@11: putchar('\n'); yading@11: yading@11: return 0; yading@11: }