From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=AWL,BAYES_00, DNS_FROM_OPENWHOIS,SPF_NEUTRAL autolearn=no version=3.2.5 From: Hihin Ruslan To: devel@lists.altlinux.org Date: Thu, 22 Sep 2011 00:30:20 +0400 User-Agent: KMail/1.9.10 (enterprise35 0.20100827.1168748) X-Face: (&xiJ3u@NuLg`*; 3Ws|g; b?`RC2/c@sH%M-Y!x5o3P]`(\R; A[i]6h^=hs}Q^p; zT/ylve$udM$8g.HiV"ls(zei4D[!--P<=?utf-8?q?ef=5CiJ4=0A=09=3Da2wRCAO?=qzO"(:gRVa/3IJS MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1338443.MrWUWthF3M"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201109220030.25647@ruslandh> Subject: [devel] ffmpeg and xdtv X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Sep 2011 20:30:33 -0000 Archived-At: List-Archive: List-Post: --nextPart1338443.MrWUWthF3M Content-Type: multipart/mixed; boundary="Boundary-01=_clkeOFZ6mOeGBTJ" Content-Transfer-Encoding: 7bit Content-Disposition: inline --Boundary-01=_clkeOFZ6mOeGBTJ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Content-Disposition: inline 0JfQtNGA0LDRgdGC0LLRg9C50YLQtSwg0L3QsNC60L7QvdC10YYg0LTQvtGI0LvQuCDRgNGD0LrQ uCDQtNC+IHhkdHYuCgrQoNCw0LfQvtCx0YDQsNC70YHRjyDQv9C+0YfRgtC4INGB0L4g0LLRgdC1 0LzQuCDQt9Cw0LPQsNC00LrQsNC80Lgg0L3QvtCy0L7Qs9C+IGZmbXBlZyAo0L/QsNGC0YcgCtC/ 0YDQuNC70LDQs9Cw0Y4pLiAK0JLQvtC30L3QuNC60LDQtdGCINC+0LTQvdC+INGB0L7QvNC90LjR gtC10LvRjNC90L7QtSDQvNC10YHRgtC+LCDQuCDQvtC00L3QviDQvNC10YHRgtC+LCDQs9C00LUg 0Y8g0L3QtSDQt9C90LDRjiAK0LrQsNC6INC/0YDQsNCy0LjQu9GM0L3QviDQv9C+0YHRgtGD0L/Q uNGC0YwuCgrQodC+0LzQvdC40YLQtdC70LXQvSDQtNC70Y8g0LzQtdC90Y8g0LLQvtGCINGN0YLQ vtGCINGD0YfQsNGB0YLQvtC6INC80L7QtdCz0L4g0L/QsNGC0YfQsCA6CgogI2lmIExJQkFWQ09E RUNfQlVJTEQgPj0gNDY0NgotICAgIGNvZGVjX2NvbnRleHQtPm1iX3FtaW4gICAgICAgICAgICAg ICA9IGRpdngubWluX3F1YW50aXplcjsKLSAgICBjb2RlY19jb250ZXh0LT5tYl9xbWF4ICAgICAg ICAgICAgICAgPSBkaXZ4Lm1heF9xdWFudGl6ZXI7CisgICAgY29kZWNfY29udGV4dC0+cW1pbiAg ICAgICAgICAgICAgID0gZGl2eC5taW5fcXVhbnRpemVyOworICAgIGNvZGVjX2NvbnRleHQtPnFt YXggICAgICAgICAgICAgICA9IGRpdngubWF4X3F1YW50aXplcjsKICNlbmRpZgoK0J3QtSDQt9C9 0LDRjiAtINGN0LrQstC40LLQsNC70LXQvdGC0L3QsC3Qu9C4INC30LDQvNC10L3QsC4KCgrQkCDQ vdC1INC30L3QsNGOINC60LDQuiDQv9C+0YHRgtGD0L/QuNGC0Ywg0YEg0L/QtdGA0LXQvNC10L3Q vdC+0LkgIG1wZWd0c19kZW11eGVyLiDQkiDRgdGC0LDRgNC+0LkgCtCy0LXRgNGB0LjQuCDQvtC9 0LAg0LHRi9C70LAg0L7Qv9GA0LXQtNC10LvQtdC90LAg0LrQsNC6IGV4dGVybiDQuCDQuNGB0L/Q vtC70YzQt9GD0LXRgtGB0Y8g0LIgCgrQpNGD0L3QutGG0LjRj9GFOgogYXZfcmVnaXN0ZXJfaW5w dXRfZm9ybWF0KCZtcGVndHNfZGVtdXhlcik7CgogY3VyX3N0cmVhbSA9IHN0cmVhbV9vcGVuKGlu cHV0X2ZpbGVuYW1lLCZtcGVndHNfZGVtdXhlcik7Cgoo0L7QsdC1INCyICBncmFiLWR2Yi5jKQoK 0JrQsNC6INGPINC/0L7QvdGP0LssICDQvtC90LAg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC0 0LvRjyDQt9Cw0LTQsNC90LjRjyDRgtC10LrRg9GJ0LXQs9C+ICjQuNC70LggCtC60LDQutC+0LPQ vi3RgtC+INC90LDRh9Cw0LvRjNC90L7Qs9C+KSDRgdC+0YHRgtC+0Y/QvdC40Y8gZGVtdXhlci4g CgrQodC10LnRh9Cw0YEg0L7QvdCwINC/0LXRgNC10YHRgtCw0LvQsCDQsdGL0YLRjCDQtNC+0YHR gtGD0L/QvdC+0Lkg0LrQsNC6IGV4dGVybi4g0JXRh9GB0LvQuCDRg9Cx0YDQsNGC0YwgCmV4dGVy biwg0YLQviDQstGB0ZEg0YHQvtCx0LjRgNCw0LXRgtGB0Y8sINC90L4g0LrQsNC6INGPINC/0L7Q tdC90LjQvNCw0Y4sINGPINGC0L7Qs9C00LAg0LfQsNCx0YDQsNGB0YvQstCw0Y4gCtC90YPQu9C4 INCy0LzQtdGB0YLQviDRjdGC0L7Qs9C+INC30L3QsNGH0LXQvdC40Y8uINCd0LUg0L/QvtC50LzR gyDQutCw0Log0YHQtNC10LvQsNGC0Ywg0L/RgNCw0LLQuNC70YzQvdC+LgoKCgotLSAKICDQkCDQ tdGJ0ZEg0LPQvtCy0L7RgNGP0YIg0YLQsNC6ICAoZm9ydHVuZSk6CiAKSG93IHNoYXJwZXIgdGhh biBhIGhvdW5kJ3MgdG9vdGggaXQgaXMgdG8gaGF2ZSBhIHRoYW5rbGVzcyAKc2VycGVudC4gCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwrQoSDRg9Cy0LDQttC10L3QuNC10Lwg0KXQuNGF0LjQvSDQoNGD0YHQu9Cw 0L0K --Boundary-01=_clkeOFZ6mOeGBTJ Content-Type: text/x-diff; charset="iso-8859-1"; name="xawdecode-20080708-ffmpeg.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="xawdecode-20080708-ffmpeg.patch" diff -uNrBbwp xawdecode-20080708/src/container-ffmpeg.c xawdecode-20080708-= new/src/container-ffmpeg.c =2D-- xawdecode-20080708/src/container-ffmpeg.c 2008-05-11 19:26:44.0000000= 00 +0400 +++ xawdecode-20080708-new/src/container-ffmpeg.c 2011-09-21 22:40:04.09077= 8816 +0400 @@ -47,7 +47,7 @@ extern AVCodecContext *audio_codec_conte static int open_ofile (struct CONTAINER* This, char* filename ,int maxsiz= e) { av_register_all(); =2D av_output_fmt =3D guess_format(This->shortname,NULL, NULL); + av_output_fmt =3D av_guess_format(This->shortname,NULL, NULL); =20 if (!av_output_fmt) { fprintf(stderr, "Could not find suitable output format\n"); @@ -55,7 +55,7 @@ static int open_ofile (struct CONTAINER } =20 /* allocate the output media context */ =2D oc =3D av_alloc_format_context(); + oc =3D avformat_alloc_context(); if (!oc) { fprintf(stderr, "Memory error\n"); return -1; @@ -131,7 +131,7 @@ static int write_frame(struct CONTAI av_init_packet(&pkt); pkt.pts=3D av_rescale_q(video_st->codec->coded_frame->pts,video_st->code= c->time_base, video_st->time_base); if(video_st->codec->coded_frame->key_frame) =2D pkt.flags |=3D PKT_FLAG_KEY; + pkt.flags |=3D AV_PKT_FLAG_KEY; pkt.stream_index=3D video_st->index; pkt.data=3D (uint8_t *) data; pkt.size=3D bytes; @@ -160,7 +160,7 @@ static int write_audio(struct CONTAI av_init_packet(&pkt); pkt.size=3Dbytes; pkt.pts=3D av_rescale_q(audio_st->codec->coded_frame->pts, audio_st->co= dec->time_base, audio_st->time_base); =2D pkt.flags |=3D PKT_FLAG_KEY; + pkt.flags |=3D AV_PKT_FLAG_KEY; pkt.stream_index=3D audio_st->index; pkt.data=3D (uint8_t*) data; =20 diff -uNrBbwp xawdecode-20080708/src/divx.c xawdecode-20080708-new/src/divx= =2Ec =2D-- xawdecode-20080708/src/divx.c 2011-09-21 23:49:13.957354848 +0400 +++ xawdecode-20080708-new/src/divx.c 2011-09-21 22:30:21.267584273 +0400 @@ -442,7 +442,7 @@ static AVFrame *picture_420p =3D NULL; int xdtv_to_ffmpeg(int x) { switch(x) { #if LIBAVCODEC_BUILD >=3D 4719 =2D case FFMPEG_XVID: return CODEC_ID_XVID; + case FFMPEG_XVID: return CODEC_ID_MPEG4; #endif case FFMPEG_MPEG4: return CODEC_ID_MPEG4; case FFMPEG_MPEG1: return CODEC_ID_MPEG1VIDEO; @@ -1179,7 +1179,7 @@ void divx_init(int long width, int long // FFMpeg Parameters from MPlayer libmpcodecs/ve_lavc.c ------------------= =2D------------------ =20 codec_context->codec_id =3D xdtv_to_ffmpeg(divx.codec); =2D codec_context->codec_type =3D CODEC_TYPE_VIDEO; + codec_context->codec_type =3D AVMEDIA_TYPE_VIDEO; codec_context->bit_rate =3D divx.bitrate; codec_context->bit_rate_tolerance =3D divx.bitrate*10; codec_context->flags =3D 0; @@ -1236,8 +1236,8 @@ void divx_init(int long width, int long codec_context->debug =3D 0; #endif =20 #if LIBAVCODEC_BUILD >=3D 4646 =2D codec_context->mb_qmin =3D divx.min_quantizer; =2D codec_context->mb_qmax =3D divx.max_quantizer; + codec_context->qmin =3D divx.min_quantizer; + codec_context->qmax =3D divx.max_quantizer; #endif=20 #if LIBAVCODEC_BUILD >=3D 4647 codec_context->me_cmp =3D ffmpeg.cmp; @@ -2003,7 +2003,7 @@ codec_context->mv0_threshold if (audio_codec_context =3D=3D NULL) audio_codec_context =3D avcodec_alloc_context(); audio_codec_context->codec_id =3D xdtv_to_audioffmpeg(divx.audio_codec= ); =2D audio_codec_context->codec_type=3D CODEC_TYPE_AUDIO; + audio_codec_context->codec_type=3D AVMEDIA_TYPE_AUDIO; switch(divx.audio_codec) { // we force to the maximum bitrate as it's not possible to configure= it through the GUI case FFMPEG_AMR_NB: audio_codec_context->bit_rate =3D 12200; break; diff -uNrBbwp xawdecode-20080708/src/grab-dvb.c xawdecode-20080708-new/src/= grab-dvb.c =2D-- xawdecode-20080708/src/grab-dvb.c 2011-09-21 23:49:13.965354474 +0400 +++ xawdecode-20080708-new/src/grab-dvb.c 2011-09-21 23:47:45.925474827 +04= 00 @@ -81,7 +81,6 @@ extern int use_file_audio; extern int filenoaudioout; extern void video_set_capture_size(int w, int h); //extern int nbufs; =2Dextern AVInputFormat mpegts_demuxer; extern AVCodec mpeg2video_decoder; extern AVCodec mp2_decoder; extern char* avifilename; @@ -90,6 +89,11 @@ int frameFinished; int dvb_grabber_running=3D0; static int stream_opened=3D0; =20 +AVInputFormat mpegts_demuxer; + + + + /**** Video **/ static AVFrame *pFrameRGB; static int numBytesRGB; @@ -933,9 +937,9 @@ static int video_thread(void *arg) /* NOTE: ipts is the PTS of the _first_ picture beginning in this packet, if any */ global_video_pkt_pts=3D pkt->pts; =2D len1 =3D avcodec_decode_video(is->video_st->codec, + len1 =3D avcodec_decode_video2(is->video_st->codec, frame, &got_picture, =2D pkt->data, pkt->size); + pkt); =20 if( (/*decoder_reorder_pts || // XDTV dfunction doesn't exist*/ = pkt->dts =3D=3D AV_NOPTS_VALUE)=20 && frame->opaque && *(uint64_t*)frame->opaque !=3D AV_NOPTS_VAL= UE) @@ -1052,9 +1056,9 @@ static int audio_decode_frame(VideoState /* NOTE: the audio packet can contain several frames */ while (is->audio_pkt_size > 0) { data_size =3D buf_size; =2D len1 =3D avcodec_decode_audio2(is->audio_st->codec, + len1 =3D avcodec_decode_audio3(is->audio_st->codec, (int16_t *)audio_buf, &data_size, =2D is->audio_pkt_data, is->audio_pk= t_size); + &is->audio_pkt); if (len1 < 0) { /* if error, we skip the frame */ is->audio_pkt_size =3D 0; @@ -1186,7 +1190,7 @@ static int stream_component_open(VideoSt enc =3D ic->streams[stream_index]->codec; =20 /* prepare audio output */ =2D if (enc->codec_type =3D=3D CODEC_TYPE_AUDIO) { + if (enc->codec_type =3D=3D AVMEDIA_TYPE_AUDIO) { if (enc->channels > 0) { enc->request_channels =3D FFMIN(2, enc->channels); } else { @@ -1212,7 +1216,7 @@ static int stream_component_open(VideoSt return -1; =20 /* prepare audio output */ =2D if (enc->codec_type =3D=3D CODEC_TYPE_AUDIO) { + if (enc->codec_type =3D=3D AVMEDIA_TYPE_AUDIO) { wanted_spec.freq =3D enc->sample_rate; wanted_spec.format =3D AUDIO_S16SYS; wanted_spec.channels =3D enc->channels; @@ -1231,7 +1235,7 @@ static int stream_component_open(VideoSt avcodec_thread_init(enc, thread_count); enc->thread_count=3D thread_count; switch(enc->codec_type) { =2D case CODEC_TYPE_AUDIO: + case AVMEDIA_TYPE_AUDIO: is->audio_stream =3D stream_index; is->audio_st =3D ic->streams[stream_index]; is->audio_buf_size =3D 0; @@ -1248,7 +1252,7 @@ static int stream_component_open(VideoSt packet_queue_init(&is->audioq); SDL_PauseAudio(0); break; =2D case CODEC_TYPE_VIDEO: + case AVMEDIA_TYPE_VIDEO: is->video_stream =3D stream_index; is->video_st =3D ic->streams[stream_index]; =20 @@ -1262,7 +1266,7 @@ static int stream_component_open(VideoSt enc-> get_buffer=3D my_get_buffer; enc->release_buffer=3D my_release_buffer; break; =2D case CODEC_TYPE_SUBTITLE: + case AVMEDIA_TYPE_SUBTITLE: is->subtitle_stream =3D stream_index; is->subtitle_st =3D ic->streams[stream_index]; packet_queue_init(&is->subtitleq); @@ -1286,14 +1290,14 @@ static void stream_component_close(Video enc =3D ic->streams[stream_index]->codec; =20 switch(enc->codec_type) { =2D case CODEC_TYPE_AUDIO: + case AVMEDIA_TYPE_AUDIO: packet_queue_abort(&is->audioq); =20 SDL_CloseAudio(); =20 packet_queue_end(&is->audioq); break; =2D case CODEC_TYPE_VIDEO: + case AVMEDIA_TYPE_VIDEO: packet_queue_abort(&is->videoq); =20 /* note: we also signal this mutex to make sure we deblock the @@ -1306,7 +1310,7 @@ static void stream_component_close(Video =20 packet_queue_end(&is->videoq); break; =2D case CODEC_TYPE_SUBTITLE: + case AVMEDIA_TYPE_SUBTITLE: packet_queue_abort(&is->subtitleq); =20 /* note: we also signal this mutex to make sure we deblock the @@ -1327,15 +1331,15 @@ static void stream_component_close(Video =20 avcodec_close(enc); switch(enc->codec_type) { =2D case CODEC_TYPE_AUDIO: + case AVMEDIA_TYPE_AUDIO: is->audio_st =3D NULL; is->audio_stream =3D -1; break; =2D case CODEC_TYPE_VIDEO: + case AVMEDIA_TYPE_VIDEO: is->video_st =3D NULL; is->video_stream =3D -1; break; =2D case CODEC_TYPE_SUBTITLE: + case AVMEDIA_TYPE_SUBTITLE: is->subtitle_st =3D NULL; is->subtitle_stream =3D -1; break; @@ -1347,22 +1351,29 @@ static void stream_component_close(Video // SYNCH Rev. 1137 static void dump_stream_info(const AVFormatContext *s) { =2D if (s->track !=3D 0) =2D fprintf(stderr, "Track: %d\n", s->track); =2D if (s->title[0] !=3D '\0') =2D fprintf(stderr, "Title: %s\n", s->title); =2D if (s->author[0] !=3D '\0') =2D fprintf(stderr, "Author: %s\n", s->author); =2D if (s->copyright[0] !=3D '\0') =2D fprintf(stderr, "Copyright: %s\n", s->copyright); =2D if (s->comment[0] !=3D '\0') =2D fprintf(stderr, "Comment: %s\n", s->comment); =2D if (s->album[0] !=3D '\0') =2D fprintf(stderr, "Album: %s\n", s->album); =2D if (s->year !=3D 0) =2D fprintf(stderr, "Year: %d\n", s->year); =2D if (s->genre[0] !=3D '\0') =2D fprintf(stderr, "Genre: %s\n", s->genre); +AVDictionaryEntry *meta; + +// meta=3Dav_dict_get(s->metadata, "track", NULL, 0); +// fprintf(stderr, "Track: %s\n", meta->value); + + + + meta=3Dav_dict_get(s->metadata, "track", NULL, 0); + fprintf(stderr, "Track: %s\n", meta->value); + meta=3Dav_dict_get(s->metadata, "title", NULL, 0); + fprintf(stderr, "Title: %s\n", meta->value); + meta=3Dav_dict_get(s->metadata, "author", NULL, 0); + fprintf(stderr, "Author: %s\n", meta->value); + meta=3Dav_dict_get(s->metadata, "copyright", NULL, 0); + fprintf(stderr, "Copyright: %s\n", meta->value); + meta=3Dav_dict_get(s->metadata, "comment", NULL, 0); + fprintf(stderr, "Comment: %s\n", meta->value); + meta=3Dav_dict_get(s->metadata, "album", NULL, 0); + fprintf(stderr, "Album: %s\n", meta->value); + meta=3Dav_dict_get(s->metadata, "year", NULL, 0); + fprintf(stderr, "Year: %s\n", meta->value); + meta=3Dav_dict_get(s->metadata, "genre", NULL, 0); + fprintf(stderr, "Genre: %s\n", meta->value); } =20 /* since we have only one decoding thread, we can use a global @@ -1442,11 +1453,11 @@ static int decode_thread(void *arg) for(i =3D 0; i < ic->nb_streams; i++) { AVCodecContext *enc =3D ic->streams[i]->codec; switch(enc->codec_type) { =2D case CODEC_TYPE_AUDIO: + case AVMEDIA_TYPE_AUDIO: if ((audio_index < 0 || wanted_audio_stream-- > 0) && !audio_d= isable) audio_index =3D i; break; =2D case CODEC_TYPE_VIDEO: + case AVMEDIA_TYPE_VIDEO: if ((video_index < 0 || wanted_video_stream-- > 0) && !video_d= isable) video_index =3D i; break; @@ -1665,19 +1676,19 @@ static void stream_cycle_channel(VideoSt int start_index, stream_index; AVStream *st; =20 =2D if (codec_type =3D=3D CODEC_TYPE_VIDEO) + if (codec_type =3D=3D AVMEDIA_TYPE_VIDEO) start_index =3D is->video_stream; =2D else if (codec_type =3D=3D CODEC_TYPE_AUDIO) + else if (codec_type =3D=3D AVMEDIA_TYPE_AUDIO) start_index =3D is->audio_stream; else start_index =3D is->subtitle_stream; =2D if (start_index < (codec_type =3D=3D CODEC_TYPE_SUBTITLE ? -1 : 0)) + if (start_index < (codec_type =3D=3D AVMEDIA_TYPE_SUBTITLE ? -1 : 0)) return; stream_index =3D start_index; for(;;) { if (++stream_index >=3D is->ic->nb_streams) { =2D if (codec_type =3D=3D CODEC_TYPE_SUBTITLE) + if (codec_type =3D=3D AVMEDIA_TYPE_SUBTITLE) { stream_index =3D -1; goto the_end; @@ -1690,13 +1701,13 @@ static void stream_cycle_channel(VideoSt if (st->codec->codec_type =3D=3D codec_type) { /* check that parameters are OK */ switch(codec_type) { =2D case CODEC_TYPE_AUDIO: + case AVMEDIA_TYPE_AUDIO: if (st->codec->sample_rate !=3D 0 && st->codec->channels !=3D 0) goto the_end; break; =2D case CODEC_TYPE_VIDEO: =2D case CODEC_TYPE_SUBTITLE: + case AVMEDIA_TYPE_VIDEO: + case AVMEDIA_TYPE_SUBTITLE: goto the_end; default: break; @@ -1747,15 +1758,15 @@ static void event_loop(void) break; case SDLK_a: if (cur_stream) =2D stream_cycle_channel(cur_stream, CODEC_TYPE_AUDIO); + stream_cycle_channel(cur_stream, AVMEDIA_TYPE_AUDIO); break; case SDLK_v: if (cur_stream) =2D stream_cycle_channel(cur_stream, CODEC_TYPE_VIDEO); + stream_cycle_channel(cur_stream, AVMEDIA_TYPE_VIDEO); break; case SDLK_t: if (cur_stream) =2D stream_cycle_channel(cur_stream, CODEC_TYPE_SUBTITLE= ); + stream_cycle_channel(cur_stream, AVMEDIA_TYPE_SUBTITLE= ); break; case SDLK_w: //toggle_audio_display(); // XDTV diff -uNrBbwp xawdecode-20080708/src/grab-v4l2.c xawdecode-20080708-new/src= /grab-v4l2.c =2D-- xawdecode-20080708/src/grab-v4l2.c 2011-09-21 23:49:13.969354286 +0400 +++ xawdecode-20080708-new/src/grab-v4l2.c 2011-09-21 22:30:21.271584048 +0= 400 @@ -43,7 +43,7 @@ #include "grab.h" #include "channel.h" #ifdef HAVE_V4L_2 =2D#include +//#include #include #include "colorspace.h" #include "memcpy.h" diff -uNrBbwp xawdecode-20080708/src/main.c xawdecode-20080708-new/src/main= =2Ec =2D-- xawdecode-20080708/src/main.c 2011-09-21 23:49:13.969354286 +0400 +++ xawdecode-20080708-new/src/main.c 2011-09-21 22:30:21.271584048 +0400 @@ -105,7 +105,6 @@ #include "devicemanager/devicemanager_ui.h" =20 #ifdef HAVE_V4L_2 =2D#include #include #endif =20 --Boundary-01=_clkeOFZ6mOeGBTJ-- --nextPart1338443.MrWUWthF3M Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (GNU/Linux) iEYEABECAAYFAk56SWEACgkQnOIT/e5gLaX28QCfWViyH+boQz35+whDrY16rszm 2j4An3zs2Rg4OCLsxYLpTXZwM6arHrbG =iy0J -----END PGP SIGNATURE----- --nextPart1338443.MrWUWthF3M--